问题描述
我知道这个问题可能太广泛了,但我正在寻找一个方向。我的客户有一个 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.php
和 content-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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。