如果Woocommerce中的产品类别中有描述,则仅显示h2标签

时间:2018-02-09 01:02:51

标签: php html wordpress woocommerce custom-taxonomy

我们的Woocommerce产品类别存档页面顶部有<h1>标记,默认情况下是产品网格。

现在,我们在底部再次添加了一个带有类别名称的<h2>标记,<h2>标记下面是该产品类别的说明。

我已经在archive-product.php中添加了这个:

<h2 class="cat-desc-title"><?php woocommerce_page_title(); ?></h2>

然而,我想知道是否有人知道如果此产品类别页面上显示说明,则只能显示此信息。

如何为此编写if语句?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

是的,可以在if语句中添加一些条件,例如:

    <?php 
        if ( is_product_taxonomy() && 0 === absint( get_query_var( 'paged' ) ) ):

        $wp_term_obj = get_queried_object();

        if ( $wp_term_obj && ! empty( $wp_term_obj->description ) ):
    ?>

        <h2 class="woocommerce-products-header__title page-title"><?php woocommerce_page_title(); ?></h2>

    <?php endif; endif; ?>

仅当查询的产品类别(或产品标签)存在说明时,才会显示<h2>标题。这是archive-product.php。经过测试和运作。

现在,如果您要专门定位产品类别档案页面(但不是产品标记档案),则会将is_product_taxonomy()替换为is_product_category()

备选方案无需覆盖模板文件:

  

这可以嵌入到钩子函数中,而不是覆盖模板,就像显示的产品类别描述一样,钩子优先级在10之前。

所以这可以通过以下方式完成:

add_action( 'woocommerce_archive_description', 'add_h2_title_before_archive_description', 5 );
function add_h2_title_before_archive_description() {
    if ( is_product_taxonomy() && 0 === absint( get_query_var( 'paged' ) ) ):
        $wp_term_obj = get_queried_object();

        if ( $wp_term_obj && ! empty( $wp_term_obj->description ) ):
        ?>
        <h2 class="woocommerce-products-header__title page-title"><?php woocommerce_page_title(); ?></h2>
        <?php
        endif; 
    endif;
}

代码放在活动子主题(或活动主题)的function.php文件中。

经过测试和工作。