WooCommerce产品价格可见性:仅针对特定类别

时间:2017-09-28 13:30:10

标签: php wordpress woocommerce categories price

我正在处理的网站要求您登录才能看到价格,我一直在使用插件来执行此操作。然而,我只是扔了一个曲线球,并告诉网站上的一个特定类别必须始终显示价格,无论用户是否登录。

看起来插件使用

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”语句要求。

如何添加特定类别的产品价格?

1 个答案:

答案 0 :(得分:1)

已更新:以下是使其正常工作的正确方法:

  • 对产品类别使用 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文件中,或者放在任何插件文件中。

经过测试和工作