問題描述

我通過 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'

要進一步閲讀,請查看:

1) 使用 wp_register_script( $handle );»wp_enqueue_script( $handle )»wp_localize_script( $handle ); – 最後一個將 php 內容移動到可以在 AJAX 腳本中訪問的 js-var 。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。