隐藏 WCFM Marketplace 供应商的添加到购物车(Woocommerce 中的管理员除外)

问题描述 投票:0回答:1

我正在使用 WooCommerce 的 WCFM Marketplace 插件,我想对除管理员之外的所有供应商隐藏“添加到购物车”。

我发现一些代码隐藏了某些类别的添加到购物车,我认为它可以修改并用于隐藏供应商的添加到购物车。

add_filter( 'woocommerce_is_purchasable', function( $is_purchasable, $product ) {
    $pcategories = get_the_terms( $product->get_id(), 'product_cat' );
    if( !empty($pcategories) ) {
        foreach($pcategories as $pkey => $pcategory) {
            if( absint($pcategory->term_id) == 197 ) {
                $is_purchasable = false;
            }
        }
    }
    return $is_purchasable;
}, 500, 2 );

我还发现了一个隐藏作者添加到购物车的代码:

/* remove add-to-cart from shop page for product author  */
add_action('woocommerce_after_shop_loop_item_title','user_filter_addtocart_for_shop_page') ;
function user_filter_addtocart_for_shop_page(){
    $user_id = get_current_user_id();
    $author_id = get_post_field('post_author', get_the_ID());
    if($user_id == $author_id){
        remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
    }
}

/* remove add-to-cart from single product  page for product author  */
add_action('woocommerce_before_single_product_summary','user_filter_addtocart_for_single_product_page') ;
function user_filter_addtocart_for_single_product_page(){
    $user_id = get_current_user_id();
    $author_id = get_post_field('post_author', get_the_ID());
    if($user_id == $author_id){
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    }
}

我尝试对这两个代码进行一些更改,但没有人适合我(抱歉,我不熟悉 PHP)

如有任何帮助,我们将不胜感激

php wordpress woocommerce vendor marketplace
1个回答
0
投票

要隐藏所有供应商的添加到购物车,请执行以下操作:

add_filter( 'woocommerce_is_purchasable', 'hide_add_to_cart_from_user_role', 100, 2 ); 
add_filter( 'woocommerce_variation_is_purchasable', 'hide_add_to_cart_from_user_role', 100, 2 ); 
function hide_add_to_cart_from_user_role( $is_purchasable, $product ) {
    // Here below set the desire user role slug
    $targeted_user_role = 'wcfm_vendor'
  
    if( current_user_can( $targeted_user_role ) ) {
        $is_purchasable = false;
    }
    return $is_purchasable;
}

代码位于子主题的functions.php文件中(或插件中)。应该可以。

或者,这也可以:

add_filter( 'woocommerce_is_purchasable', 'hide_add_to_cart_from_vendor', 100, 2 ); 
add_filter( 'woocommerce_variation_is_purchasable', 'hide_add_to_cart_from_vendor', 100, 2 ); 
function hide_add_to_cart_from_vendor( $is_purchasable, $product ) {
    $vendor_id = get_post_field('post_author', $product->get_id());

    if( get_current_user_id() == $vendor_id && ! current_user_can('administrator') ) {
        $purchasable = false;
    }
    return $purchasable;
}
© www.soinside.com 2019 - 2024. All rights reserved.