當談到與服務器端的遠程請求工作時,file_get_contents()
功能似乎是一個可靠的選擇,但WordPress已經包含一個非常有用的API HTTP API。
HTTP API可用於向遠程API發送數據和從遠程API檢索數據,這也意味着對您自己的服務器的任何請求。
有包含在WordPress的HTTP API四個主要功能:
例如,你可以使用wp_remote_get()從network.json文件中檢索數據,然後分析它與wp_localize_script()功能一起,露出你需要在你排隊的js文件中的數據。
請將以下功能(未經測試)作爲參考,但您不應該有任何問題。
- 功能 -
function wp_request_localize_my_json_data() {
// Helpers to define the $url path
//$protocol = is_ssl() ? 'https' : 'http';
$directory = trailingslashit(get_template_directory_uri());
// Define the URL
$url = $directory . 'network.json';
// Register main js file to be enqueued
wp_register_script('network-js', $directory . 'assets/js/network.js', array('jquery'), false, true );
// Make the request
$request = wp_remote_get($url);
// If the remote request fails, wp_remote_get() will return a WP_Error, so let’s check if the $request variable is an error:
if(is_wp_error($request)) {
return false; // Bail early
}
// Retrieve the data
$body = wp_remote_retrieve_body($request);
$data = json_decode($body);
// Localize script exposing $data contents
wp_localize_script('network-js', 'networkJSON', array(
'network_url' => admin_url('admin-ajax.php'),
'full_data' => $data
)
);
// Enqueues main js file
wp_enqueue_script('network-js');
}
add_action('wp_enqueue_scripts', 'wp_request_localize_my_json_data', 10);
如果一切發展順利,你可能會在您的處置從network.json
文件檢索到的本地化數據結束。
現在讓我們假設您在network.json文件中有一個名爲current_user
的變量。所以爲了在入隊的JS文件中訪問這個變量,你只需要做:
<script type="text/javascript">
var my_data = networkJSON.full_data;
var user = my_data.current_user;
</script>
本地化腳本是實現它的方法!請參閱文檔[這裏](https://codex.wordpress.org/Function_Reference/wp_localize_script)。您可以使用可供其他js文件訪問的本地化數據排入腳本。答案[這裏](http://stackoverflow.com/a/5229483/3406865)是我正在採取的方法。 – Celso