如何隐藏添加到购物车按钮特定的角色和产品类别Wooccommerce



我试过这个代码,但不起作用,这个网站在技术上很困难:

function remove_add_to_cart_for_user_role() {
//set product category
$terms = 'produk-toko';
$targeted_user_role = 'customer'; // The slug in "lowercase"
$user_data = get_userdata(get_current_user_id());
if ( in_array( $targeted_user_role, $user_data->roles ) ) && ! is_user_logged_in(){
if(has_terms($terms, 'product_cat')) {
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');

怎么了?

您的if条件有一些打字错误。您的if条件是在检查in_array!is_user_logged_in是否有多余空间后立即调用的。所以你必须改变你的if条件来自

if ( in_array( $targeted_user_role, $user_data->roles ) ) && ! is_user_logged_in(){

if ( in_array( $targeted_user_role, $user_data->roles ) && !is_user_logged_in() ){

按照以下方式重写函数以解决错误。

function remove_add_to_cart_for_user_role(){
//set product category
$terms = 'produk-toko';
$targeted_user_role = 'customer'; // The slug in "lowercase"
$user_data = get_userdata(get_current_user_id());
if ( in_array( $targeted_user_role, $user_data->roles ) && !is_user_logged_in() ){
if(has_terms($terms, 'product_cat')){
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');

最新更新