插件初始化钩子重复触发

时间:2015-03-25 作者:Develope Cruz

我刚刚注意到,如果浏览器中加载了任何仪表板页面,我自己编写的插件的init事件每隔一分钟左右就会触发一次,而不与之交互,甚至不关注它。

这是预期的行为吗?我找不到关于它的任何信息,我是不是遗漏了什么?

1 个回复
最合适的回答,由SO网友:Nabil Kadimi 整理而成

这是因为您没有排除ajax请求。

检查以下示例the WordPress Codex for the admin_init hook 也适用于init 钩住并查看AJAX请求如何排除在if 使用DOING_AJAX 常数:

/**
 * Restrict access to the administration screens.
 *
 * Only administrators will be allowed to access the admin screens,
 * all other users will be shown a message instead.
 *
 * We do allow access for Ajax requests though, since these may be
 * initiated from the front end of the site by non-admin users.
 */
function restrict_admin() {

    if ( ! current_user_can( \'manage_options\' ) && ( ! defined( \'DOING_AJAX\' ) || ! DOING_AJAX ) ) {
        wp_die( __( \'You are not allowed to access this part of the site\' ) );
    }
}
add_action( \'admin_init\', \'restrict_admin\', 1 );
您可以将此作为起点:

add_action( \'init\', \'wpse_182220_init\' );
function wpse_182220_init() {

    // Exit function if doing an AJAX request
    if ( defined( \'DOING_AJAX\' ) && DOING_AJAX ) {
        return;
    }

    echo \'OK, not doing AJAX\';

}
道具到RRikesh 感谢他在评论中提到这一点。

结束

相关推荐

JQuery Plugins in Wordpress

我已经能够在某种程度上拼凑出应该如何做到这一点,但我真的很难做到这一点。我想使用Table Sorter插件(http://tablesorter.com) 在自定义页面模板中显示数据,但我不确定它是否正确。我已经钩住了“wp\\u enqueue\\u scripts”,并使用此函数将表分类器JS文件排入队列。我相信这是正确的,但是我还需要在JQuery Ready()函数中放置一行,但是我不确定如何从自定义页面模板中执行此操作。有人能解释一下吗?<?php /* Templat