반응형
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
반응형
'programing' 카테고리의 다른 글
Understanding Fragment's setRetainInstance(boolean) (0) | 2023.09.21 |
---|---|
내 사이트의 고유 방문자를 어떻게 계산합니까? (0) | 2023.09.21 |
말로카 3차원 배열이 C? (0) | 2023.09.21 |
MISRAC가 포인터의 복사본이 메모리 예외를 유발할 수 있다고 명시하는 이유는 무엇입니까? (0) | 2023.09.21 |
mmap은 언제 사용하시겠습니까? (0) | 2023.09.21 |