J'ai essayé de faire une simple redirection pour certains utilisateurs. Je ne veux pas accéder à wp-admin /, alors j'ai fait ce code:
function no_admin_access() {
if ( !current_user_can( 'delete_posts' ) ) {
wp_redirect( site_url( '/' ) ); exit;
}
}
add_action('admin_init', 'no_admin_access');
Mais quand j'essaie ensuite de faire une requête ajax avec ces utilisateurs, le lien est également redirigé, de sorte que je n'arrive jamais à admin-ajax.php.
Quelqu'un qui a un bon travail pour ça?
Merci.
Code AJAX
$.ajax({
type: 'POST',
url: MyAjax.ajaxurl,
data: {
action: 'mux_ajax_delete_pix',
pid: $this.attr('data-id')
},
success: function(){
$this.parent().fadeOut();
}
});
Vous pouvez et vérifier la constante DOING_AJAX
qui est définie sur un Ajax dans votre contrôle conditionnel:
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' );
j'utilise la fonction ci-dessous et cela fonctionne très bien pour moi
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' );