在 WooCommerce 中隐藏一组产品的价格
Hiding prices in WooCommerce for a set of products
在我们的 Woocommerce 产品中,我们有两种类型的产品。
- 通过脚本从外部 XML url 文件导入的产品。
- 通过 woo 管理界面照常添加产品。
我们添加了一个元字段来识别这些进口产品。
仅隐藏这些进口产品价格的最佳方法是什么?
我尝试删除一些 woocommerce 操作,但它会影响所有 woo 产品。
I have tried by removing some woocommerce actions, but its affects all woo products.
然后你需要条件逻辑。这应该摆脱循环中的价格显示。
编辑 正如评论中所指出的,一旦您删除该操作,所有后续产品都会永久删除该操作。因此,鉴于此,我添加了一个 else
语句来解决此问题。
函数so_32584641_remove_price_from_loop(){
全球 $product;
if( 'mycbgenie' == get_post_meta( $product->id, '_mycbgenie_managed_by', true ) ){
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price' );
} else {
add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price' );
}
}
add_action( 'woocommerce_before_shop_loop_item', 'so_32584641_remove_price_from_loop' );
这应该将其从单个产品页面中删除:
function so_32584641_remove_price_from_single(){
global $product;
$your_meta = get_post_meta( $product->id, '_your_meta_key', true );
if( 'mycbgenie' == $your_meta ){
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price' );
}
}
add_action( 'woocommerce_before_single_product', 'so_32584641_remove_price_from_single' );
在我们的 Woocommerce 产品中,我们有两种类型的产品。
- 通过脚本从外部 XML url 文件导入的产品。
- 通过 woo 管理界面照常添加产品。
我们添加了一个元字段来识别这些进口产品。
仅隐藏这些进口产品价格的最佳方法是什么? 我尝试删除一些 woocommerce 操作,但它会影响所有 woo 产品。
I have tried by removing some woocommerce actions, but its affects all woo products.
然后你需要条件逻辑。这应该摆脱循环中的价格显示。
编辑 正如评论中所指出的,一旦您删除该操作,所有后续产品都会永久删除该操作。因此,鉴于此,我添加了一个 else
语句来解决此问题。
函数so_32584641_remove_price_from_loop(){ 全球 $product;
if( 'mycbgenie' == get_post_meta( $product->id, '_mycbgenie_managed_by', true ) ){
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price' );
} else {
add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price' );
}
} add_action( 'woocommerce_before_shop_loop_item', 'so_32584641_remove_price_from_loop' );
这应该将其从单个产品页面中删除:
function so_32584641_remove_price_from_single(){
global $product;
$your_meta = get_post_meta( $product->id, '_your_meta_key', true );
if( 'mycbgenie' == $your_meta ){
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price' );
}
}
add_action( 'woocommerce_before_single_product', 'so_32584641_remove_price_from_single' );