webentwicklung-frage-antwort-db.com.de

Leiten Sie Benutzer von Admin weg

Ich habe versucht, für einige Benutzer eine einfache Weiterleitung zu erstellen. Ich möchte nicht auf wp-admin/zugreifen.

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

Aber wenn ich dann versuche, mit diesen Benutzern eine Ajax-Anfrage zu stellen, wird diese ebenfalls umgeleitet, sodass ich nie zu admin-ajax.php komme

Wer hat eine gute Arbeit für diese?

Vielen Dank.

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

Sie können und eine Prüfung für die DOING_AJAX-Konstante, die auf einem Ajax in Ihrer bedingten Prüfung definiert ist:

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

ich benutze die unten stehende Funktion und es funktioniert gut für mich

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

0
Abouasy