我wp_list_categories()
用来获取所有类别的列表并生成导航栏.有没有办法按字母排序以特定顺序排序这些类别.
例如:Connect,News&Views,Q&A,Hello Startup,Startup 101 ......
大多数主题都不会使用类别的描述。我所做的简单解决方法是在说明中使用数字。目前,此处的热门文章中有一些来自jQuery的技巧,是不需要的。
您也可以添加自定义订单字段。
只是
$categories = get_categories( array( 'orderby' => 'description', 'order' => 'ASC' ) );
如果您不使用类别的"描述"字段,也可以通过在每个"描述"字段中输入一个数字来完成排序,然后根据此编号使用Javascript/jQuery进行排序.
wp_list_categories函数有一个use_desc_for_title参数,您可以将其设置为true:
wp_list_categories('use_desc_for_title=1');
因此,如果您在说明字段中使用数字,则生成的类别列表可能如下所示:
现在您可以对列表进行排序,例如在document.ready事件中使用jQuery.如果以分层方式使用子类别,请使用如下的递归函数:
$( document ).ready( function() { sort_list_recursive( $( '#category_list' ) ); } ); function sort_list_recursive( parent ) { var lst = parent.children( 'li' ); lst.sort( function( a, b ) { var _a = a.getElementsByTagName( 'a' )[0].title; var _b = b.getElementsByTagName( 'a' )[0].title; return _a > _b ? 1 : -1; } ).appendTo( parent ); lst.each( function() { $( this ).children( 'ul' ).each( function() { sort_list_recursive( $( this ) ); }); }); }
NB
不要在描述字段中使用0(零),它将被忽略并设置为null
排序后你可能想要摆脱设置为数字的标题属性,这可以通过jQuery轻松完成.