programing

WooCommerce의 특정 사용자 역할에 대한 카트에 추가 단추 제거

megabox 2023. 9. 21. 20:13
반응형

WooCommerce의 특정 사용자 역할에 대한 카트에 추가 단추 제거

우커머스와 함께 Divi 테마를 사용하는 가상 스토어에는 최종 사용자와 리셀러라는 두 그룹의 사용자가 있습니다. 최종 고객의 경우 "구매" 버튼만 표시하면 됩니다.이미 리셀러의 경우 "주문에 추가" 버튼만 제공됩니다(YTH Request A Quote 플러그인 제공).리셀러 계정의 카트에 추가 버튼을 제거하는 방법이 의심스러울 경우 코드를 사용하는 방법을 알고 있습니다.

remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

전체 사이트에서 버튼을 제거하지만, 어떤 종류의 것을 사용하려고 합니다.if그룹만 정의할 수 있습니다.이와 같은 것:

$user = wp_get_current_user();
if ( in_array( 'Revenda', (array) $user->roles ) ) {
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
}

또는 이 항목:

if( current_user_can('revenda') ) {
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
}

저도 이 코드를 시도하고 있습니다.

function user_filter_addtocart_for_shop_page(){
    $user_role = get_user_role();
    $role_id = get_role('Revenda');
    if($user_role == $role_id){
        remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
    }
}

get_user_role이 표시되는 위치:

function get_user_role() {
    global $current_user;

    $user_roles = $current_user->roles;
    $user_role = array_shift($user_roles);

    return $user_role;
}

어떻게 하면 이것을 이룰 수 있을까요?

감사해요.

원하는 작업을 수행할 수 있는 올바른 코드(사용자 역할 슬러그는 소문자이고 사용자 데이터를 가져올 때 사용합니다.

그래서 당신의 코드를 조금 바꿨습니다.

function remove_add_to_cart_for_user_role(){
    // Set Here the user role slug
    $targeted_user_role = 'revenda'; // The slug in "lowercase"
    $user_data = get_userdata(get_current_user_id());
    if ( in_array( $targeted_user_role, $user_data->roles ) ) {
        remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    }
}
add_action('init', 'remove_add_to_cart_for_user_role');

저는 코드를 후크에 따라 실행되는 함수에 내장했습니다.

이 코드는 테스트되었으며 완전히 작동합니다.

코드가 작동합니다.활성 하위 테마(또는 테마)의 php 파일입니다.또는 플러그인 php 파일에서도 마찬가지입니다.

언급URL : https://stackoverflow.com/questions/40997121/remove-add-to-cart-button-for-a-specific-user-role-in-woocommerce

반응형