问题描述

我通过 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。