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

时间:2019-11-13 02:20:38

标签: php wordpress woocommerce

我已经尝试过此代码,但是无法正常工作,并且该网站在技术上很困难:

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

怎么了?

1 个答案:

答案 0 :(得分:0)

您的条件是否有错别字和错误。在检查in_array!is_user_logged_in是否有多余的空格后立即调用了if条件。 所以你必须改变你的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');