为什么管理员AJAX要重新加载我的页面

时间:2013-09-01 作者:Twifty

据我所知,我的代码中没有使用过Ajax。然而,在调试时,我遇到了使用“admin ajax”的断点。调用堆栈的根。我的断点的第二次命中发生在原始断点之后的10到30秒之间。奇怪的是,到目前为止还没有HTML输出,所以浏览器中没有脚本。

你知道为什么会发生这种情况,为什么我的php脚本会被调用两次吗?

4 个回复
最合适的回答,由SO网友:fuxia 整理而成

这可能是新的Heartbeat API. 它以15到60秒的间隔运行,并提供了一种在后台根据AJAX与WordPress进行通信的简单方法。

您可以使用在JavaScript中禁用它wp.heartbeat.stop(); 并在PHP中使用remove_action( \'admin_init\', \'wp_auth_check_load\' ); (在某些页面上可能不够)。

SO网友:Rarst

大量相关的代码片段似乎不再适用,因为代码经过了大量重构。

这似乎是我在没有爆炸的情况下最接近于阻止它的方法(从3.8开始):

add_action(
    \'admin_print_footer_scripts\',
    function () {
        ?>
        <script type="text/javascript">
            jQuery(document).ready(function ($) {
                $(window)
                    .off(\'blur.wp-heartbeat-focus\')
                    .off(\'focus.wp-heartbeat-focus\')
                    .trigger(\'unload.wp-heartbeat\');
            });
        </script><?php
    }
);

SO网友:Chirag

将其放置在函数中。php关闭Hearteat API

add_action( \'init\', \'my_deregister_heartbeat\', 1 );
function my_deregister_heartbeat() {
    global $pagenow;

    if ( \'post.php\' != $pagenow && \'post-new.php\' != $pagenow )
        wp_deregister_script(\'heartbeat\');
}
我没有亲自测试过,但您可以在这里查看更多信息:http://wordpress.org/support/topic/admin-ajaxphp-being-called-from-admin-pages-causing-db-connection-issues

SO网友:cwd

要禁用心跳检查,可以使用以下代码:

add_action( \'init\', \'my_deregister_heartbeat\', 1 );
function my_deregister_heartbeat() {
    global $pagenow;

    if ( \'post.php\' != $pagenow && \'post-new.php\' != $pagenow )
        wp_deregister_script(\'heartbeat\');
}
资料来源: @azaozz/core.trac

结束

相关推荐

为wp_ajax_添加回调函数不起作用

我试图在WordPress AJAX操作中再添加一个回调函数woocommerce_apply_coupon.这个动作是在WooCommerce插件中定义的,我想从插件文件中向这个动作添加我自己的回调函数。我所尝试的:add_action( \'wp_ajax_nopriv_woocommerce_apply_coupon\',\'darn\',999); add_action( \'wp_ajax_woocommerce_apply_coupon\', \'darn\',999); &#