在 WooCommerce 中列出产品类别的主要产品子类别

List main product subcategories of a product category in WooCommerce

我有一个名为“产品类型”的 WooCommerce 产品类别,我试图列出其下的所有类别,但不是这些类别的子类别。例如,我有:

我希望它列出“硬质合金铣刀”和“打鱼工具”,而不是“儿童类别”。

这是我的代码:

<ul>
<?php $terms = get_terms(
    array(
        'taxonomy'   => 'product_cat',
        'hide_empty' => false,
            'child_of' => 32,
            'post__not_in' => 25,
            'depth' => 1,
            'include_children' => false,
    )
);

// Check if any term exists
if ( ! empty( $terms ) && is_array( $terms ) ) {
    // Run a loop and print them all
    foreach ( $terms as $term ) { ?>
        <a href="<?php echo esc_url( get_term_link( $term ) ) ?>">
            <li data-mh="234908ju243">
            <?php echo $term->name; ?>
            </li>
        </a><?php
    }
} ?>
</ul>

但它仍然返回“子类别”。我不确定为什么将深度限制为“1”并将 'include_children' 设置为 'false' 并不能解决问题。

您应该需要将参数 parent 与您的“产品类型”术语 ID 一起使用,以获得直接子术语 (子类别),如下所示:

<ul>
<?php 
// Get the WP_Term object for "Product Types" product category (if needed)
$parent_term = get_term_by('name', 'Product Types', 'product_cat' )->term_id;

// Display "Product Types" category
echo' <a href="' . esc_url( get_term_link( $parent_term ) ) . '">' . $parent_term->name . '</a><br>';

// Get main direct subcategories
$terms = get_terms( array(
    'taxonomy'   => 'product_cat',
    'hide_empty' => false,
    'parent'     => $parent_term->term_id,
) );

// Check if any term exists
if ( ! empty( $terms ) && is_array( $terms ) ) {
    // Loop through each term and print them all
    foreach ( $terms as $term ) {
        echo '<li data-mh="234908ju243">
        <a href="' . esc_url( get_term_link( $term ) ) . '">' . $term->name . '</a>
        </li>';
    }
} ?>
</ul>

应该可以。

我稍微更改了您的 html 结构,因为 <a> 标签需要位于 <li> 标签内。