WooCommerce-显示存档上所有子类别的嵌套列表-Product.php

时间:2016-01-26 作者:asdf

当用户单击WooCommerce商店页面上的产品类别时,我需要它看起来像下面的设计,而不是默认设置,第二张图片标记了我的意思:

Mock without mark up

Mock with mark up

所以基本上,我需要遍历每个子类别,显示它,检查它是否有子类别,如果有,则显示它们。我目前可以使用此帖子的答案获得子类别级别,并将其挂接到“woocommerce\\u after\\u subcategory”:

https://wordpress.stackexchange.com/a/101273

我只需要帮助检查这些子类别是否有子类别,然后显示它们。

如果我需要进一步解释,请告诉我!谢谢

1 个回复
最合适的回答,由SO网友:asdf 整理而成

我通过修改问题中链接的函数使其递归来解决这个问题。注释解释了我的更改:

function woocommerce_subcats_from_parentcat_by_ID( $parent_cat_ID ) {
$args = array(
   \'hierarchical\' => 1,
   \'show_option_none\' => \'\',
   \'hide_empty\' => 0,
   \'parent\' => $parent_cat_ID,
   \'taxonomy\' => \'product_cat\'
);
$subcats = get_categories($args);

if ( $subcats ) { // added if statement to check if there are subcategories
  echo \'<ul class="product-category-list">\';
    foreach ($subcats as $sc) {
      $link = get_term_link( $sc->slug, $sc->taxonomy );
        echo \'<li><a href="\'. $link .\'">\'.$sc->name.\'</a></li>\';
        woocommerce_subcats_from_parentcat_by_ID( $sc->term_id ); // function calls itself
    }
  echo \'</ul>\';
} else {
  return; //return if no subcategories
    }} // last bracket kept being pushed out of code block if I used a line break
我相信有一种更有效的方法可以做到这一点,而不是让函数每次都调用自己,但这是可行的。

相关推荐