it-swarm.com.de

Prüfen Sie, ob es sich um eine "einzelne Produktseite" handelt, und prüfen Sie die "Rolle" für eine Weiterleitung

Nach vielen Recherchen im Internet habe ich keine Lösung gefunden, die funktioniert.

Wissen Sie, wie ich das im Woocommerce machen kann:

Ich versuche das im Moment:

function cm_redirect_users_by_role() {

    $current_user   = wp_get_current_user();
    $role_name      = $current_user->roles[0];

    if ( is_products_page() && is_single() ){
        if ( $role_name === 'customer' ) {
            wp_redirect( 'https://www.mysite.fr/shop/' );
        } // if
        else {
            wp_redirect( 'https://www.mysite.fr/' );
        } //
    }
} // cm_redirect_users_by_role
add_action( 'admin_init', 'cm_redirect_users_by_role' );

Aber das geht nicht:/Wenn ich auf einer einzelnen Produktseite bin, werde ich nicht weitergeleitet.

4
moikben

Hier ist das Ergebnis, das funktioniert. Ich setze die Bedingung ein: is_product(), um zu überprüfen, ob es sich um eine einzelne Produktseite handelt. Und ich habe in der add_action() geändert: admin_init von wp

function cm_redirect_users_by_role() {

    $current_user   = wp_get_current_user();
    $role_name      = $current_user->roles[0];

    if ( is_product() ){
        if ( $role_name !== 'customer' && $role_name !== 'shop_manager' && $role_name !== 'dc_vendor') {
            wp_redirect( 'https://www.mysite.fr/' );
        } // if
    }
} // cm_redirect_users_by_role
add_action( 'wp', 'cm_redirect_users_by_role' );
3
Moikben