阻止admin部分(但仍使用admin-ajax.php)

时间:2011-09-16 作者:Michael Watson

我正在mo建立一个基于社区的WP站点,并阻止任何禁止管理员使用该站点上的管理部分的人:

add_action( \'init\', \'sw_block_users\' );

function sw_block_users() {
    if ( is_admin() && ! current_user_can( \'administrator\' ) ) {
        wp_redirect( home_url() );
        exit;
    }
}
然而,我也在使用管理ajax的强大功能。php来做一些ajaxy的事情(如下所述:http://reallywebdesign.com/2011/09/send-dynamic-data-to-javascript-in-wordpress/), 被上述函数阻止。

是否有其他方法可以防止非管理员访问wp admin目录,同时维护admin ajax文件的使用?谢谢

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

以下动作挂钩应该会有所帮助:

add_action(\'admin_init\', \'wpse28702_restrictAdminAccess\', 1);
function wpse28702_restrictAdminAccess() {
    $isAjax = (defined(\'DOING_AJAX\') && true === DOING_AJAX) ? true : false;

    if(!$isAjax) {
        if(!current_user_can(\'administrator\')) {
            wp_die(__(\'You are not allowed to access this part of the site\'));
        }
    }
}

结束

相关推荐

如何让AJAX内容可被搜索引擎索引?

在WordPress中公开ajax交付的内容以确保其可由Google等索引的最佳做法是什么。?我有一个网站,我正在使用jQuery tabs control 通过ajax在父页面上动态显示子页面的内容。更改选项卡可在子页面之间切换,浏览器中的url将更新为/parent slug/#child slug,而不刷新页面。因此,站点中没有链接到/父页/子页的直接路径。我的功能如前所述。但谷歌将无法访问加载JavaScript的内容。我似乎找不到使用Google\'s hash bang fragments.我