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

如何显示子类别在WooCommerce WordPress

岳阳飙
2023-03-14

我正在尝试获取子类别的子类别的产品类别

<?php 

  $taxonomy     = 'product_cat';
  $orderby      = 'name';  
  $show_count   = 0;      // 1 for yes, 0 for no
  $pad_counts   = 0;      // 1 for yes, 0 for no
  $hierarchical = 1;      // 1 for yes, 0 for no  
  $title        = '';  
  $empty        = 0;
$args = array(
      'taxonomy'     => $taxonomy,
      'orderby'      => $orderby,
      'show_count'   => $show_count,
      'pad_counts'   => $pad_counts,
      'hierarchical' => $hierarchical,
      'title_li'     => $title,
      'hide_empty'   => $empty
);
$all_categories = get_categories( $args );
foreach ($all_categories as $cat) {
  if($cat->category_parent == 0) {

      $category_id = $cat->term_id;

       $args2 = array(
              'taxonomy'     => $taxonomy,
              'child_of'     => 0,
              'parent'       => $category_id,
              'orderby'      => $orderby,
              'show_count'   => $show_count,
              'pad_counts'   => $pad_counts,
              'hierarchical' => $hierarchical,
              'title_li'     => $title,
              'hide_empty'   => $empty
      );

    $sub_cats = get_categories( $args2 );

    if( $sub_cats ) {
      echo '<li class="title '.$cat->name.'"><a >
          '; 
      echo $cat->name ;
      echo '<i class="chevron right icon"></i>
        </a></li>';
      $sub_cats = "";
    }else {
      echo '<li class="titleVide '.$cat->name.'Hide"><a >
          '; 
      echo $cat->name ;
      echo '</a></li>';
      $sub_cats = "";
    }


      $args2 = array(
              'taxonomy'     => $taxonomy,
              'child_of'     => 0,
              'parent'       => $category_id,
              'orderby'      => $orderby,
              'show_count'   => $show_count,
              'pad_counts'   => $pad_counts,
              'hierarchical' => $hierarchical,
              'title_li'     => $title,
              'hide_empty'   => $empty
      );
      $sub_cats = get_categories( $args2 );
      if($sub_cats) {

        echo '<li class="content"> <p>';
          foreach($sub_cats as $sub_category) {

            echo '
                <a href="'. get_term_link($sub_category->slug, "product_cat" ) .'">'. $sub_category->name . '</a>
             ';


          }

          echo ' </p></li>';
      } else {
    echo '';
      }

      $sub_cats = "";
  }       
} /* end foreach all_categories cat */

wp_reset_query();
?>

这段代码按层次列出了它们下面的所有顶级类别和子类别,但我有子类别(sub-sub-category)的子类别,因此如何列出这些子类别(使用clic)。

BO中的类别

在FO中列出类别

共有1个答案

阙阳
2023-03-14

通过使用child_of=当前类别id尝试下面的代码

<?php
    $taxonomy     = 'product_cat';
    $orderby      = 'name';  
    $show_count   = 0;      // 1 for yes, 0 for no
    $pad_counts   = 0;      // 1 for yes, 0 for no
    $hierarchical = 1;      // 1 for yes, 0 for no  
    $title        = '';  
    $empty        = 0;
    $args = array(
          'taxonomy'     => $taxonomy,
          'orderby'      => $orderby,
          'show_count'   => $show_count,
          'pad_counts'   => $pad_counts,
          'hierarchical' => $hierarchical,
          'title_li'     => $title,
          'hide_empty'   => $empty
    );
    $all_categories = get_categories( $args );
    foreach ($all_categories as $cat) {
      if($cat->category_parent == 0) {

          $category_id = $cat->term_id;

           $args2 = array(
                  'taxonomy'     => $taxonomy,
                  'child_of'     => 0,
                  'parent'       => $category_id,
                  'orderby'      => $orderby,
                  'show_count'   => $show_count,
                  'pad_counts'   => $pad_counts,
                  'hierarchical' => $hierarchical,
                  'title_li'     => $title,
                  'hide_empty'   => $empty
          );

        $sub_cats = get_categories( $args2 );

        if( $sub_cats ) {
          echo '<li class="title '.$cat->name.'"><a >
              '; 
          echo $cat->name ;
          echo '<i class="chevron right icon"></i>
            </a></li>';
          $sub_cats = "";
        }else {
          echo '<li class="titleVide '.$cat->name.'Hide"><a >
              '; 
          echo $cat->name ;
          echo '</a></li>';
          $sub_cats = "";
        }


          $args2 = array(
                  'taxonomy'     => $taxonomy,
                  'child_of'     => $category_id,
                  'orderby'      => $orderby,
                  'show_count'   => $show_count,
                  'pad_counts'   => $pad_counts,
                  'hierarchical' => $hierarchical,
                  'title_li'     => $title,
                  'hide_empty'   => $empty
          );
          $sub_cats = get_categories( $args2 );
          if($sub_cats) {

            echo '<li class="content"> <p>';
              foreach($sub_cats as $sub_category) {

                echo '
                    <a href="'. get_term_link($sub_category->slug, "product_cat" ) .'">'. $sub_category->name . '</a>
                 ';


              }

              echo ' </p></li>';
          } else {
        echo '';
          }

          $sub_cats = "";
      }       
    } /* end foreach all_categories cat */

    wp_reset_query();

?>

或使用wp_list_categories()函数列出类别https://developer.wordpress.org/reference/functions/wp_list_categories/

 类似资料:
  • 我的类别表设计如下 我有三个级别的类别 < li >父项 < li >孩子 < li >子系 如何以下列方式显示它们? (SELECT*From类别):我得到以下数组,如下所示

  • 我正试图通过WoodPress主题中的一个函数从woocommerce获取产品类别,我已经做到了: 这将按层次列出所有顶级类别及其下的子类别,但我有子类别(子类别)的子类别,因此如何列出这些子类别。

  • 我需要一些关于Woocommerce类别显示选项的帮助。在Wordpress仪表板中,我按照以下链接全局设置类别显示选项<外观- 有三种显示选项可用。 展示产品 目前,选择了第三个选项,它显示子类别以及父类别和子类别下的所有产品。但是,我想排除子类别下的所有产品。换句话说,我只想在父类别下显示子类别和产品。 我在几个教程网站上找到了以下片段。代码完全按照我想要的方式工作,但它也禁用了管理产品搜索和

  • 问题内容: 我想在选择 列表(下拉列表)中显示类别,子类别和子子类别,就像WordPress在其管理面板中显示的方式一样。 首先看一下我的数据库表(tb_categories)- 数据库表 我想要以下HTML格式的输出- 输出 两项“无”和“未分类”在代码中进行了硬编码。我 想知道如何 使用选择列表选项以层次结构顺序显示类别及其子类别。 我正在尝试使用自我连接的以下sql查询。这 是- And t

  • 我正在建立woo commerce在线商店,我面临一个问题,我无法在父类别中显示子类别。我试图找到插件或任何其他解决方案,但我没有得到任何东西。所有类别都显示在主产品页中我只想在主产品页中显示父类别,在父/主类别页中显示所有子类别。 例如 我有两个主要类别 男士 妇女 两者都有子类别,如t恤、服装、裤子等。 我需要知道如何在父类别页面中显示子类别。

  • 当用户访问我的WooCommerce类别页面时,我希望侧栏显示一个类别列表,该列表根据当前类别的不同而有所不同。 有一个默认的“WooCommerce类别小部件”,显示网站上的所有产品类别。然而,我不想把这些都展示出来。 我只是想表明: A) 如果当前类别是父类别,则类别列表必须仅显示子类别 或 B) 如果当前类别是子类别,则类别列表必须仅显示同级类别(同级=具有相同父类别的类别) 例子: 父类别