WooCommerce 产品价格可见性:仅为特定类别添加价格
WooCommerce product price visibility: add price back only for a specific category
我正在使用的网站要求您登录才能查看价格,我一直在使用插件来执行此操作。然而,我刚被抛出一个曲线球,告诉我网站上的一个特定类别必须一直显示价格,无论用户是否登录。
看起来插件使用了
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10);
和
remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
删除价格。这就是我尝试为特定类别的产品重新添加价格的方式:
function make_surplus_price_always_visible(){
global $post;
$terms = wp_get_post_terms( $post->ID, 'product_cat' );
foreach ( $terms as $term ) $categories[] = $term->slug;
if ( in_array( 'surplus-allison-parts', $categories ) && !is_user_logged_in()) {
?>
<script>
alert('product in surplus');
</script>
<?php
//add_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10);
add_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
}
}
add_action('woocommerce_after_shop_loop_item_title', 'make_surplus_price_always_visible', 50);
但它不会加回价格。 jQuery 警报正在运行,因此这与满足 "if" 声明要求无关。
我怎样才能加回特定类别的产品价格?
已更新:这是使其工作的正确方法:
- 使用
has_term()
产品类别的 Wordpress 功能更好更短。
- 删除了您的 javascript 消息 (那是为了测试目的)。
- 挂钩优先级需要刚好在 10(价格挂钩优先级)之前才能工作。
代码:
add_action('woocommerce_after_shop_loop_item_title', 'shop_loop_make_surplus_price_always_visible', 8 );
function shop_loop_make_surplus_price_always_visible(){
global $post;
// Set here your product categories (Names, slugs or IDs) in this array
$categories = array( 'surplus-allison-parts' );
if ( has_term( $categories, 'product_cat', $post->ID ) && ! is_user_logged_in()) {
add_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
}
}
并且:
add_action('woocommerce_single_product_summary', 'single_product_make_surplus_price_always_visible', 8 );
function single_product_make_surplus_price_always_visible(){
global $post;
// Set here your product categories (Names, slugs or IDs) in this array
$categories = array( 'surplus-allison-parts' );
if ( has_term( $categories, 'product_cat', $post->ID ) && ! is_user_logged_in()) {
add_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10);
}
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
已测试并有效
我正在使用的网站要求您登录才能查看价格,我一直在使用插件来执行此操作。然而,我刚被抛出一个曲线球,告诉我网站上的一个特定类别必须一直显示价格,无论用户是否登录。
看起来插件使用了
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10);
和
remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
删除价格。这就是我尝试为特定类别的产品重新添加价格的方式:
function make_surplus_price_always_visible(){
global $post;
$terms = wp_get_post_terms( $post->ID, 'product_cat' );
foreach ( $terms as $term ) $categories[] = $term->slug;
if ( in_array( 'surplus-allison-parts', $categories ) && !is_user_logged_in()) {
?>
<script>
alert('product in surplus');
</script>
<?php
//add_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10);
add_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
}
}
add_action('woocommerce_after_shop_loop_item_title', 'make_surplus_price_always_visible', 50);
但它不会加回价格。 jQuery 警报正在运行,因此这与满足 "if" 声明要求无关。
我怎样才能加回特定类别的产品价格?
已更新:这是使其工作的正确方法:
- 使用
has_term()
产品类别的 Wordpress 功能更好更短。 - 删除了您的 javascript 消息 (那是为了测试目的)。
- 挂钩优先级需要刚好在 10(价格挂钩优先级)之前才能工作。
代码:
add_action('woocommerce_after_shop_loop_item_title', 'shop_loop_make_surplus_price_always_visible', 8 );
function shop_loop_make_surplus_price_always_visible(){
global $post;
// Set here your product categories (Names, slugs or IDs) in this array
$categories = array( 'surplus-allison-parts' );
if ( has_term( $categories, 'product_cat', $post->ID ) && ! is_user_logged_in()) {
add_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
}
}
并且:
add_action('woocommerce_single_product_summary', 'single_product_make_surplus_price_always_visible', 8 );
function single_product_make_surplus_price_always_visible(){
global $post;
// Set here your product categories (Names, slugs or IDs) in this array
$categories = array( 'surplus-allison-parts' );
if ( has_term( $categories, 'product_cat', $post->ID ) && ! is_user_logged_in()) {
add_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10);
}
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
已测试并有效