当前位置: 首页 > 知识库问答 >
问题:

如果产品类别有子项,请从WooCommerce中的父项中删除永久链接

冯永长
2023-03-14

灵感来自于获取与子类别的WooCommerce类别,我正在创建一个下拉部分,我想知道是否有任何方法从父类别中删除永久链接,如果它有一个子类别。

下面是我的代码示例:

<?php
     $args = array(
     'taxonomy' => 'product_cat',
     'hide_empty' => false,
     'parent'   => 0
    );

    $product_cat = get_terms( $args );

    $thumbnail_id = get_woocommerce_term_meta( $term_id, 'thumbnail_id', true );
    $image        = wp_get_attachment_url( $thumbnail_id );

    foreach ($product_cat as $term){

     $term_link = get_term_link( $term, 'product_cat' );
     $thumb_id    = get_woocommerce_term_meta( $term->term_id, 'thumbnail_id', true );
     $img_src     = wp_get_attachment_url( $thumb_id );
    
    //if parent category has children remove link

    echo '<ul>
          <li><img src="' . $img_src . '"/><a href="'.get_term_link($term->term_id).'">'.$term->name.'</a>
          <ul>';

    // else keep the parent link

    $child_args = array(
        'taxonomy' => 'product_cat',
        'hide_empty' => false,
        'parent'   => $term->term_id
    );

    $child_product_cats = get_terms( $child_args );

    foreach ($child_product_cats as $child_product_cat){

    echo '<li><a href="'.get_term_link($child_product_cat->term_id).'">'.$child_product_cat->name.'</a></li>';

    }

    echo '</ul>
    </li>
    </ul>';
}

只有在没有子术语的情况下,如何显示顶级产品类别术语的链接?

共有1个答案

彭炳
2023-03-14

以下内容将显示产品类别术语列表,如果顶级术语有任何子术语,则不会链接这些术语:

<?php
$taxonomy     = 'product_cat';

$parent_terms = get_terms( array(
    'taxonomy'   => $taxonomy,
    'hide_empty' => false,
    'parent'     => 0
) );

echo '<ul>';

// Loop through top level terms
foreach ( $parent_terms as $parent_term ) {
    $term_link  = get_term_link( $parent_term, 'product_cat' );
    $thumb_id   = get_woocommerce_term_meta( $parent_term->term_id, 'thumbnail_id', true );
    $image_html = $thumb_id > 0 ? '<img src="' . wp_get_attachment_url( $thumb_id ) . '"/>' : '';

    // Get children terms
    $child_terms = get_terms( array(
        'taxonomy'   => $taxonomy,
        'hide_empty' => false,
        'parent'     => $parent_term->term_id
    ) );

    // 1. There are children terms
    if( ! empty($child_terms) ) {
        echo '<li>' . $image_html . $parent_term->name . '</li>
        <ul>';

        // Loop through children terms
        foreach ( $child_terms as $term ) {
            $term_link = get_term_link( $term->term_id, $taxonomy );

            echo '<li><a href="' . $term_link . '">' . $term->name . '</a></li>';
        }

        echo '</ul>';
    }
    // 2. There are NOT children terms
    else {
        $parent_term_link = get_term_link( $parent_term->term_id, $taxonomy );

        echo '<li>' . $image_html . '<a href="' . $parent_term_link . '">' . $parent_term->name . '</a></li>';
    }
}
echo '</ul>';

测试和工作。

 类似资料:
  • 我有以下代码,用于从WooCommerce产品类别小部件中删除除管理员和批发客户(自定义用户级别)之外的所有用户的“批发类别”(通过slug)。 这非常好,但是它只删除了父类别,留下了所有的子类别。我如何也删除“批发类别”的子类别? 谢啦

  • 你在为它做什么?我在文件末尾(wp-content/plugins/woocommerce/woocommerce.php)写了这个字符串: 但当我从购物车中删除项目时,它就不起作用了! 但也不起作用

  • 在woocommerce中,我有两种发货方式,统一费率标准(方法1)和统一费率特快专递(方法2)。两个产品类别,X和Z,只能使用方法1,所以如果购物车包含任何来自类别X或Z的物品,我想在结帐时从发货选项中隐藏方法2。 我搜索了Stackoverflow,发现这篇文章隐藏了Woocommerce中特定产品的特定运输方法,并试图应用答案,但没有成功。我相信下面的代码是合适的。 运输方式2的id为5,产

  • 我在购物车和结账页面中显示Woocommerce产品类别。然而,我试图让它只显示文本,并防止它被“点击”-即删除链接。 我试过用浏览器工具检查,用CSS删除,但没有成功。-感谢您的帮助! 以下是用于在签出页面中显示类别的代码:

  • 我正在与woocommerce建立电子商务网站。我在父类别下划分了子类别。我上传每个子类别的产品,不仅选择子类别,还选择父类别。但是,当我单击父类别时,我看不到任何产品。我只能在子类别中看到。例如,我有“手表”

  • 我正在边栏和页脚小部件区域使用woocommerce产品类别小部件。 我有两个家长类别。我想这些被显示,但不是可点击的链接。 你可以在这里看到这一页http://www.terrykirkwood.co.uk/w 有人能建议添加什么css来阻止这些链接被点击吗? 谢谢 以下是第一次出现的代码: