获取产品类别的排序顺序

时间:2016-10-19 作者:Alexnl

我的客户在管理面板中拖拽子类别以更改其顺序。

我有以下代码输出特定类别父级的子类别:

$mainCategory = get_categories(
        array (
          \'parent\'    => $category_id[\'term_id\'],
          \'taxonomy\'  => \'product_cat\',
          \'orderby\'   =>  \'menu_order\'
        )
      );
      foreach( $mainCategory as $mc ) {
        $cat_link = get_category_link( $mc->term_id );
        echo \'<div class="main-category col-md-3">\';
        echo \'<a href="\'.$cat_link.\'">\';
        $thumbnail_id = get_woocommerce_term_meta( $mc->term_id, \'thumbnail_id\', true ); // Get Category Thumbnail
        $image = wp_get_attachment_url( $thumbnail_id ); 
        if ( $image ) {
          echo \'<div class="mc-img">\';
          echo \'<img src="\' . $image . \'" alt="" />\';
          echo \'</div>\';
        }
        echo \'<h2>\';
        echo $mc->name;
        echo \'</h2>\';
        echo \'<p>\';
        echo $mc->description;
        echo \'</p>\';
        echo \'<div class="mc-button">Explore Products</div>\';
        echo \'</a>\';
        echo \'</div>\';
      }
类别按字母顺序输出,而不是管理员在仪表板中指定的顺序。

“menu\\u order”不起作用

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

为子孙后代解答,因为我遇到了同样的问题,而这条线索是我找到的最接近我所寻找的东西。

结果证明,解决方案非常简单。

如果在参数中未指定“orderby”,则将使用默认排序顺序(Woo admin中的类别顺序)。把你的论点去掉。

SO网友:Aurovrata

你为什么不使用Navigational Menu 在Wordpress中。通过这种方式,您的客户可以按照他们选择的顺序向自定义菜单添加新术语,从而在您的页面上反映出来。

在中创建新的自定义菜单functions.php 文件

function register_my_menu() {
  register_nav_menu(\'product-list-menu\',__( \'Product Listing\' ));
}
add_action( \'init\', \'register_my_menu\' );`
然后转到仪表板菜单部分,外观->菜单,按照您希望列出的顺序添加自定义分类术语或子类别术语。(这是一个tutorial 如果您需要更多信息)。

最后,您可以使用

<?php wp_nav_menu( array( \'theme_location\' => \'product-list-menu\' ) ); ?>
thewp_nav_menu 功能(codex documentation) 允许您将自己的css类添加到列表的自定义样式中。

Wordpress使用Walker class 生成菜单。将每个项目构建为列表。您可以使用nav_menu_link_attributes (codex documentation) 要自定义每个菜单项的html属性wp_nav_menu_items 在菜单列表末尾添加自定义项的步骤(tutorial).

如果您想对列表的创建方式进行更多控制(例如使用<h2> 标记术语名称,然后使用custom Walker class 您可以将其解析为函数。拥有自己的Walker类可以实现非常强大的功能,例如,如果在分类法中添加了新术语,但这些术语尚未添加到菜单中,那么您可以在构建列表时对此进行验证,从而允许添加列表末尾未排序的新项。

希望这有帮助。

SO网友:Aurovrata

我在这里为您的信息添加了另一个答案,这与我提供的第一个答案大不相同,因此为了清楚起见,我将其作为第二个答案。

您可以使用插件对分类法中的术语进行排序。我穿过Custom Taxonomy Order New Edition 在最近的一篇文章中,我还没有尝试。在谷歌上搜索时,我还发现Category Order and Taxonomy Terms Order 似乎也在做类似的事情。您可能希望对这些进行旋转,看看它们是否满足您的需要。