将用户从Admin Break AJAX重定向

时间:2012-10-23 作者:Kristian Primdal

尝试对一些用户进行简单重定向,我不想访问wp admin/,因此我执行了以下代码:

function no_admin_access() {
    if ( !current_user_can( \'delete_posts\' ) ) {
        wp_redirect( site_url( \'/\' ) ); exit;
    }
}
add_action(\'admin_init\', \'no_admin_access\');
但是,当我尝试向这些用户发出ajax请求时,该请求也会被重定向,因此我永远无法访问admin ajax。php

有谁对此有很好的解决办法吗?

谢谢

AJAX代码

$.ajax({
    type: \'POST\',
    url: MyAjax.ajaxurl,
    data: {
        action: \'mux_ajax_delete_pix\',
        pid: $this.attr(\'data-id\')
    },
    success: function(){
        $this.parent().fadeOut();
    }
});

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

您可以和检查DOING_AJAX 在条件检查中在Ajax上定义的常量:

function no_admin_access()
{
    if (
        // Don\'t do this for AJAX calls
        ! defined( \'DOING_AJAX\' ) 
        // Capability check
        && ! current_user_can( \'delete_posts\' ) 
        )
    {
        // Redirect to home/front page
        wp_redirect( site_url( \'/\' ) );
        // Never ever(!) forget to exit(); or die(); after a redirect
        exit;
    }
}
add_action( \'admin_init\', \'no_admin_access\' );

SO网友:Abouasy

我正在使用下面的函数,它对我来说工作得很好

function remove_admin_access_for_non_editor() { if ( is_admin() && ! current_user_can( \'edit_posts\' ) && ! ( defined( \'DOING_AJAX\' ) && DOING_AJAX ) ) { wp_redirect( home_url() ); exit; } } add_action( \'init\', \'remove_admin_access_for_non_editor\' );

结束

相关推荐

通过AJAX加载时,嵌入的Twitter提要无法很好地呈现

如果您将推特URL粘贴到帖子中,Wordpress将很好地呈现它。但是如果我通过Ajax加载帖子,URL会被一个Blockquote取代,但不会被渲染良好的Blockquote取代。Blockquote的类为twitter-tweet 而不是像预期的那样twitter-tweet-rendered 所有这些额外的东西。这是通过Ajax加载的:这是正常请求加载的结果:那么,我是否可以启动任何Javascript操作来呈现推特提要?这是我加载它的方式: $.ajax({