web-dev-qa-db-ja.com

IFが「単一の製品ページ」であることを確認し、リダイレクトの「役割」を確認してください。

ネット上で多くの調査をした後、私はうまくいく解決策を見つけていません。

あなたは私がウーコマースでどのようにそれをすることができるか知っていますか:

今のところ試してみます。

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

しかし、それはうまくいきません:/私が単一の製品ページにいるとき、私はリダイレクトしません。

4
moikben

これがうまくいく結果です、私は条件を入れました:is_product()が単一の製品ページであるかどうか確認するため。そして私はadd_action()で変更しました: admin_init / 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