問題描述
我透過 ajax 向我的外掛的 php 檔案發出請求,並且應該用 update_option() 儲存一些資料,但是 php 丟擲一個錯誤:
Call to undefined function update_option()
我猜,當我呼叫我的 php 檔案與 ajax WP 不載入它的功能… 或什麼?
乾杯
最佳解決方案
不要直接將 AJAX 傳送到您的 PHP 檔案。而是使用 WordPress 的內建 AJAX 功能 1) 。您可以從外掛註冊 AJAX 回撥,WordPress 會將請求路由到您的外掛檔案。
例如,此程式碼將註冊一個名為”wpa_49691″ 的回撥:
add_action( 'wp_ajax_wpa_49691', 'wpa_49691_callback' );
add_action( 'wp_ajax_nopriv_wpa_49691', 'wpa_49691_callback' );
function wpa_49691_callback() {
// Do whatever you need with update_option() here.
// You have full access to the $_POST object.
}
然後,您釋出所需的任何資料,只需在物件中指定 action:
<script type="text/javascript">
jQuery(document).ready(function($) {
var data = {
action: 'wpa_49691',
my_var: 'my_data'
};
jQuery.post( ajaxurl, data, function(response) {
// handle response from the AJAX request.
});
});
</script>
該指令碼將您的資料釋出到伺服器。在伺服器回撥中,您將看到 $_POST['my_var'] = 'my_data'。
要進一步閱讀,請檢視:
-
WordPress and AJAX – 免費電子書的話題
1) 使用 wp_register_script( $handle );»wp_enqueue_script( $handle )»wp_localize_script( $handle ); – 最後一個將 php 內容移動到可以在 AJAX 指令碼中訪問的 js-var 。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。