wordpress / woocommerce:如果为零则删除价格

时间:2015-04-10 19:11:24

标签: php wordpress woocommerce

我正忙于使用wordpress / woocommerce网站,并且当项目在产品类别/存档页面上为零时,我想要隐藏商品的价格。

我已尝试在网络和php文件中查找,但无法找到我应该添加if语句的位置。

我的PHP知识非常有限。我想知道其他人是否有这方面的经验或能以正确的方式帮助我

谢谢!

6 个答案:

答案 0 :(得分:2)

我还没有对它进行过测试,但我希望这样的事情可以胜任。将其添加到functions.php文件中。

add_action('woocommerce_before_shop_loop_item','custom_remove_loop_price');
function custom_remove_loop_price(){
    global $product;
    if(!$product->price){
        remove_action('woocommerce_after_shop_loop_item_title','woocommerce_template_loop_price',10);
    }
}

答案 1 :(得分:1)

这个终于为我做了(使用woocommerce 3.0.8):

<bound method Entry.__str__ of <Question: This is a question about technology?>>

答案 2 :(得分:1)

这是另一种方法:

add_filter( 'woocommerce_get_price_html','maybe_hide_price',10,2);
function maybe_hide_price($price_html, $product){
     if($product->price>0){
          return $price_html;
     }
     return '';
 }

答案 3 :(得分:0)

此代码适用于Woocommerce 3.6.3。复制到您的functions.php

//Hide Price when Price is Zero
add_filter( 'woocommerce_get_price_html','maybe_hide_price',10,2);
function maybe_hide_price($price_html, $product){
     if($product->get_price()>0){
          return $price_html;
     }
     return '';
 } 
// End of above code

答案 4 :(得分:0)

尝试了杰瑞德(Jared)的回答,但正如有人所说,一旦满足条件,它便取消了所有价格。最终,我找到了这个解决方案,如果价格为0,它将删除操作,如果不是,则将其添加回去。似乎可以工作。

public function woocommerce_after_shop_loop_item_title_remove_product_price(){
    global $product;
    $price = floatval( $product->get_price() );
    if( $price <= 0 ){
        remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
    }else{
        add_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
    }
}

add_action( 'woocommerce_after_shop_loop_item_title', 'category_page_changes', 0 );

答案 5 :(得分:0)

!is_admin()

add_filter( 'woocommerce_get_price_html','maybe_hide_price',10,2);
function maybe_hide_price($price_html, $product){
     if( $product->get_price() == 0 && !is_admin() ){
          return ''; //or return 'Any text'
     }
     return $price_html;
 }