问题描述

我知道这个问题可能太广泛了,但我正在寻找一个方向。我的客户有一个 30-40 个产品的商店。无论什么原因,他们不想在线销售,但他们希望在其网站上保留产品页面,信息等。

有没有办法,使用钩子或其他方式来隐藏物品的价格,添加到购物车按钮等在 woocommerce?还是应该只是编辑 php 模板文件?

最佳解决方案

幸运的是,手机有很多钩子,这样可以消除价格和按钮:

remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );

如果您需要删除更多的东西,您可以挖掘 content-product.phpcontent-single-product.php

我可以想象,不仅仅是你想隐藏/删除的价格/按钮 (如页面/功能),this tutorial 给你一些指针

次佳解决方案

扩展上述代码 (感谢 Ewout),以下代码将摆脱所有产品的所有价格和 「添加到购物车」 按钮,以及为什么提供解释。我需要一个提供直销产品的网站的代码,并遵守其规则,我不能向公众显示价格。

将过滤器添加到您的主题的 functions.php 文件中。

    add_filter('woocommerce_get_price_html','members_only_price');

    function members_only_price($price){

if(is_user_logged_in() ){
    return $price;
}

else {
    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
    return 'Only <a href="'%20.get_permalink(woocommerce_get_page_id('myaccount')).%20'">Registered Users</a> are able to view pricing.';
      }

}

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。