返回
WooCommerce:仅获取正在销售的类目
php
2024-03-08 01:12:03
在 WooCommerce 中仅获取正在销售的类目
摘要:
在 WooCommerce 电子商务网站中,分类结构有助于用户轻松找到他们想要的产品。有时,仅显示包含正在销售产品的类目很有用。本文提供了一个使用 PHP 代码实现此功能的综合指南。
获取父级类目
首先,获取所有父级产品类目,这些类目不包含任何子类目。
检查子类目中是否存在正在销售的产品
接下来,遍历每个父级类目并检查其子类目。如果任何子类目包含正在销售的产品,则表示该父级类目应显示。
显示包含正在销售产品的类目
最后,仅显示包含正在销售产品的父级类目。这可以帮助客户更快地找到他们感兴趣的产品。
示例代码
以下示例代码展示了如何实现此功能:
<ul class="accordion list-group sub-catalog">
<?php
$terms = get_terms('product_cat', array( 'parent' => 0, 'exclude' => '15' ));
if( $terms ):
$original_query = $wp_query;
foreach ( $terms as $key => $term ):
$child = get_terms(
'product_cat',
array(
'child_of' => $term->term_id,
'hide_empty' => true
)
);
?>
<li class="accordion-card list-group-item">
<div class="acc-card-title">
<a href="<?php echo get_term_link($term); //echo $term->name; ?>"><?php echo $term->name; ?></a>
<?php if ( ! $child ){ ?>
<?php
} else {
?>
<span class="fa fa-plus"></span>
<?php
}
?>
</div>
<ul class="accordion list-group sub-catalog">
<?php
$child_terms = get_terms(
'product_cat',
array(
'child_of' => $term->term_id,
'hide_empty' => true
)
);
foreach ( $child_terms as $child_term ) {
$re_child_terms = get_terms(
'product_cat',
array(
'child_of' => $child_term->term_id,
'hide_empty' => true
)
);
if ( ! $re_child_terms ){
?>
<li class="accordion-card list-group-item">
<div class="acc-card-title">
<a href="<?php echo get_term_link($child_term);?>"> <?php echo $child_term->name; ?></a>
</div>
</li>
<?php
}
}
?>
</ul>
</li>
<?php
endforeach;
$wp_query = null;
$wp_query = $original_query;
?>
</ul>
<?php endif; ?>
常见问题解答
1. 如何排除特定类目?
在获取父级类目时,可以使用 exclude
参数排除特定类目。例如:
$terms = get_terms('product_cat', array( 'parent' => 0, 'exclude' => '15' ));
2. 如何在代码中设置类目名称?
在显示类目时,可以使用 $term->name
获取类目名称。
3. 如何添加子类目层级?
示例代码中注释掉了添加子类目层级的部分。取消注释以启用该功能。
4. 如何自定义显示样式?
代码中使用的样式只是示例。你可以根据需要自定义样式。
5. 如何处理没有子类目的类目?
在示例代码中,如果类目没有子类目,它将不会显示在accordion中。