【问题标题】:Show h2 tag ONLY if there is a description in product category in Woocommerce仅当 Woocommerce 的产品类别中有描述时才显示 h2 标签
【发布时间】:2018-07-19 17:11:46
【问题描述】:
我们的 Woocommerce 产品类别存档页面在默认情况下在顶部有一个 <h1> 标签,后跟产品网格。
现在我们在底部再次添加了带有类别名称的<h2> 标签,<h2> 标签下方是该产品类别的描述。
我已经在archive-product.php 中设置了这个并添加了这个:
<h2 class="cat-desc-title"><?php woocommerce_page_title(); ?></h2>
但是我想知道是否有人知道只有在此产品类别页面上显示描述时才能显示此内容的方法。
如何为此编写if 声明?
非常感谢任何帮助。
【问题讨论】:
标签:
php
html
wordpress
woocommerce
custom-taxonomy
【解决方案1】:
是的,这可以在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 文件中。
经过测试并且有效。