內容簡介
Ochre’s Geolocation Services plugin for
WordPress 使用 W3C Geolocation API 取得訪客的實際位置,讓 WordPress 網站能夠呈現適當於訪客實際位置的內容,例如當地地圖、活動列表、分店和加盟店位置、社交媒體和其他地理上有趣的資訊。
外掛提供三個後端動作鉤子可用於您或第三方插件或主題動作使用,以及 AJAX 動作用於定製「前端」,例如執行 JavaScript 與解析的位置資訊、重新導向到新頁面或重新整理當前頁面。
設定
WordPress 設定->Ochre Geolocation 頁面提供全域設定和每個頁面/文章的地理位置設定:
全域或每個頁面/文章地理位置設定
每個頁面/文章的設定包括:
執行自訂 JavaScript
重新導向到 URL
重新整理頁面
在前端關閉 ochregeo 動作
完全禁用
動作
當接收到地理位置更新時,do_action() 會啟動以下動作:
ochregeo_received_nosupport:裝置/瀏覽器不支援地理位置
ochregeo_received_unknownpos:無法檢索位置
ochregeo_received_location: 已接收位置,此動作將 OCHRELABS_WP_Geolocation 物件作為唯一參數
AJAX 動作
實作以下 AJAX 動作:
(nopriv) ochregeo_ochregeos:傳送位置資訊並基於每個頁面/文章或全域設定執行動作。
(nopriv) ochregeo_get_coordinates:檢索最近接收到的位置資訊。(我們未測試過這個)
在成功地地理位置更新後執行自訂 JavaScript
在每個頁面/文章或全域執行的 JavaScript 可以存取包含 Geolocation 服務外掛程式的資訊的 res 物件。
此物件的屬性包括:
res.la:緯度
res.ll:經度
res.ev:海拔(不一定可用 - 不要依賴)
res.ac:準確度(不一定可用 - 不要依賴)
如果啟用了反向地理編碼,物件還可以包含:
res.country:國家
res.countryc:國家代碼
res.state:州/省
res.statec:洲/省代碼
res.city:城市
El Quickie API 參考
// 這是外掛程式實例化的 Ochre Geo 物件。
$ochre_geo = new OCHRELABS_WP_Geolocation();
// 取得當前地理位置請求的狀態。$ochre_geo::STATUS_UPDATED 代表您具有「有效」的座標資料。
// 相關常數如下:
$ochre_geo::STATUS_QUERY; // 等待客戶端更新
$ochre_geo::STATUS_UPDATED; // 已從客戶端接收到座標更新
$ochre_geo::STATUS_NOTSUPPORTED; // 設備不支援地理位置
$ochre_geo::STATUS_ERROR; // 客戶端返回了錯誤
$ochre_geo::STATUS_UNKNOWNPOS; // 位置不明
$ochre_geo::STATUS_DISABLED; // 模組已告知不顯示地理位置功能
外掛標籤
開發者團隊
② 後台搜尋「Ochre W3C Geolocation Services」→ 直接安裝(推薦)
原文外掛簡介
Ochre’s Geolocation Services plugin for
WordPress utilizes the W3C Geolocation API to retrieve a visitor’s physical location, enabling a
WordPress website to present content relevant to a visitors current physical location such as local maps, event listings, branch and franchise locations, social media and other information that is geographically
interesting.
The plugin provides three “back end” action hooks for use by your or third party plugins or theme actions, and AJAX actions for “front end” customization such as executing javascript with the resolved Location information, redirecting to a new page, or refreshing the current page.
Configuration
Global Configuration is available from the WordPress settings->Ochre Geolocation page:
Global or per-post/per page geolocation behavour
Per-page and per-post configurations include:
Executing custom javascript
Redirecting to a URL
Performing a page refresh
Firing off the ochregeo actions but doing nothing on the front end
Disabling completely
Actions
The following actions for do_action() are fired when a Geolocation update is received:
ochregeo_received_nosupport : No Geolocation support in the device/browser
ochregeo_received_unknownpos : A position could not be retrieved
ochregeo_received_location : Position was received. This action is passed the OCHRELABS_WP_Geolocation object as its only argument
AJAX actions
The following AJAX actions are implemented:
(nopriv) ochregeo_ochregeos : Transmits location information and executes an action based on a per-post/page or global setting.
(nopriv) ochregeo_get_coordinates : Retrieves last received location information. (we haven’t tested this)
Executing custom javascript after a succesful Geolocation update
Javascript executed on a per-page/post or global basis has access to a res object
containing information from the Geolocation Service plugin.
Properties of this object are:
res.la; // latitude
res.ll; // longitude
res.ev; // elevation (not always available - do not rely on)
res.ac // accuracy (not always available - do not rely on)
If reverse geo coding is enabled, the object may also contain:
res.country // country
res.countryc // country code
res.state // state
res.statec // state code
res.city // city
El Quickie API Reference
`
// This is the Ochre Geo object instantiated by the plugin.
$ochre_geo = new OCHRELABS_WP_Geolocation();
// Get status of the current geolocation request. $ochre_geo::STATUS_UPDATED means you have “valid” coordinate data.
// Constants are:
$ochre_geo::STATUS_QUERY; // waiting for update from client
$ochre_geo::STATUS_UPDATED; // received coordinate update from client
$ochre_geo::STATUS_NOTSUPPORTED; // client does not support geo location
$ochre_geo::STATUS_ERROR; // an error was returned from the client
$ochre_geo::STATUS_UNKNOWNPOS; // location was unknown
$ochre_geo::STATUS_DISABLED; // module has been told not to present geolocation query
$ochre_geo->get_status();
// Set the location information manually (not normally needed)
$ochre_geo->set_coordinates($latitude,$longitude,$elevation=0,$accuracy=0);
// get the current resolved location information – check get_status() first before relying on this data!
// the returned array will be something like: array(“latitude”=>49.1234, “longitude”=>”-123.1234″,”elevation”=>0,”accuracy”=>0);
$ochre_geo->get_coordinates();
// geocodes the current resolved location information and returns it as an array like array(“city”=>”Vancouver”,”country”=>”Canada”,”state”=>”British Columbia”,”statec”=>”BC”,”country”=>”Canada”,”countryc”=>”CA”)
$ochre_geo->geocode();
Reverse Geo Coder
We've thrown in Yahoo! place finder Geocoding support. The geocoder()
returns an array consisting of something like:
array(
“city”=>”Vancouver”,”
“country”=>”Canada”,
“state”=>”British Columbia”,
“statec”=>”BC”,
“country”=>”Canada”,
“countryc”=>”CA”
)
`
Geo Coding support is still young and subject to change. It’s not hooked into the Javascript API, and since there are at least a few geo coder javascript api’s already out there we haven’t decided whether to do this or not.
