問題描述
我通過 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。