首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Woocommerce中隐藏基于产品类别的价格

在Woocommerce中隐藏基于产品类别的价格
EN

Stack Overflow用户
提问于 2018-02-08 05:06:57
回答 1查看 3.4K关注 0票数 3

在Woocommerce中,我试图根据类别隐藏存档页面和单个产品页面上的产品,但是条件似乎不起作用,只是隐藏了所有价格,无论我是否设置了类别

代码语言:javascript
运行
复制
add_filter( 'woocommerce_variable_sale_price_html', 'woocommerce_remove_prices', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'woocommerce_remove_prices', 10, 2 );
add_filter( 'woocommerce_get_price_html', 'woocommerce_remove_prices', 10, 2 );

function woocommerce_remove_prices( $price, $product ) {
     if(is_product_category('sold')){   
        $price = '';
        return $price;
     } 
}
EN

Stack Overflow用户

回答已采纳

发布于 2018-02-08 07:17:27

要使您的代码正常工作,您应该使用has_term()条件函数,并且您将需要始终在末尾返回价格,而不是if声明:

代码语言:javascript
运行
复制
add_filter( 'woocommerce_variable_sale_price_html', 'woocommerce_remove_prices', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'woocommerce_remove_prices', 10, 2 );
add_filter( 'woocommerce_get_price_html', 'woocommerce_remove_prices', 10, 2 );
function woocommerce_remove_prices( $price, $product ) {
    if( is_product_category('sold') || has_term( 'sold', 'product_cat', $product->get_id() ) )
        $price = '';

    return $price;
}

它起作用了!但这不会删除所选的产品变化价格,并且您仍然可以在任何地方使用add to cart按钮。

代码放在活动子主题(或活动主题)的function.php文件中。

相反,您可以使用以下命令来删除该特定产品类别上的所有价格、数量按钮和添加到购物车按钮:

代码语言:javascript
运行
复制
// Specific product category archive pages
add_action( 'woocommerce_after_shop_loop_item_title', 'hide_loop_product_prices', 1 );
function hide_loop_product_prices(){
    global $product;

    if( is_product_category('sold') ):

    // Hide prices
    remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
    // Hide add-to-cart button
    remove_action('woocommerce_after_shop_loop_item','woocommerce_template_loop_add_to_cart', 30 );

    endif;
}

// Single product pages
add_action( 'woocommerce_single_product_summary', 'hide_single_product_prices', 1 );
function hide_single_product_prices(){
    global $product;

    if( has_term( 'sold', 'product_cat', $product->get_id() ) ):

    // Hide prices
    remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );

    // Hide add-to-cart button, quantity buttons (and attributes dorpdowns for variable products)
    if( ! $product->is_type('variable') ){
        remove_action('woocommerce_single_product_summary','woocommerce_template_single_add_to_cart', 30 );
    } else {
        remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
    }

    endif;
}

代码放在活动子主题(或活动主题)的function.php文件中。

经过测试,效果良好。

票数 7
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48673253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档