2

Tried to make a simple redirect for some users I don't want to access the wp-admin/, so I did this code:

function no_admin_access() {
    if ( !current_user_can( 'delete_posts' ) ) {
        wp_redirect( site_url( '/' ) ); exit;
    }
}
add_action('admin_init', 'no_admin_access');

But when I then try to make a ajax request with those users, the that is also redirected so I never get to admin-ajax.php

Anybody who has a good work around for this ?

Thanks.

AJAX Code

$.ajax({
    type: 'POST',
    url: MyAjax.ajaxurl,
    data: {
        action: 'mux_ajax_delete_pix',
        pid: $this.attr('data-id')
    },
    success: function(){
        $this.parent().fadeOut();
    }
});
2
  • Please show your complete AJAX related code - I'm pretty sure that you're simply locking yourself out. (Happens to the best).
    – kaiser
    Oct 23, 2012 at 15:50
  • I have added the Ajax code, but Bainternet answer below worked. Oct 24, 2012 at 11:58

2 Answers 2

2

You can and a check for the DOING_AJAX constant which is defined on an Ajax in your conditional check:

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' );
1
  • Works great on the backend, but doesn't work for front end posting. Authors can't upload images with this solution on the front end. Still can't find a way around that...
    – Jake
    Jun 17, 2013 at 17:38
0

i'm using below function and it is working fine for me

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' );

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.