web-dev-qa-db-fra.com

Vérifier si est une "page de produit unique" et vérifier le "rôle" pour une redirection

Après de nombreuses recherches sur le net, je n'ai pas trouvé de solution qui fonctionne.

Savez-vous comment puis-je faire cela sur woocommerce:

J'essaye ça pour le 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' );

Mais cela ne fonctionne pas:/lorsque je suis sur une seule page de produit, je ne suis pas redirigé.

4
moikben

Voici le résultat qui fonctionne, je mets dans la condition: is_product() pour vérifier si est une seule page de produit. Et j'ai changé dans la add_action(): admin_init by 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