San*_*eef 10 wordpress wordpress-theming
我wp_list_categories()
用来获取所有类别的列表并生成导航栏.有没有办法按字母排序以特定顺序排序这些类别.
例如:Connect,News&Views,Q&A,Hello Startup,Startup 101 ......
小智 7
大多数主题都不会使用类别的描述。我所做的简单解决方法是在说明中使用数字。目前,此处的热门文章中有一些来自jQuery的技巧,是不需要的。
您也可以添加自定义订单字段。
只是
$categories = get_categories( array(
'orderby' => 'description',
'order' => 'ASC'
) );
Run Code Online (Sandbox Code Playgroud)
如果您不使用类别的"描述"字段,也可以通过在每个"描述"字段中输入一个数字来完成排序,然后根据此编号使用Javascript/jQuery进行排序.
wp_list_categories函数有一个use_desc_for_title参数,您可以将其设置为true:
wp_list_categories('use_desc_for_title=1');
Run Code Online (Sandbox Code Playgroud)
类别描述现在<a>
在生成的html中设置为标签的title属性.
因此,如果您在说明字段中使用数字,则生成的类别列表可能如下所示:
<ul id="category_list">
<li><a href="#" title="3">Category C</a></li>
<li><a href="#" title="1">Category A</a></li>
<li><a href="#" title="2">Category B</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
现在您可以对列表进行排序,例如在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 ) );
});
});
}
Run Code Online (Sandbox Code Playgroud)
NB
wordpress core 的问题是表wp_terms
没有term_order
列。这意味着,标准 WordPress 不支持自定义术语顺序。如果您查看此WP 数据库结构,您可以找到该表wp_term_relationships
。该表负责帖子和分类(您的类别)之间的关系并且该表有一term_order
列。
现在,使用简单的 SQL 语句ALTER TABLE wp_terms ADD term_order INT(11) NOT NULL DEFAULT 0
(不要忘记$wpdb->wp_terms
变量),您可以向表中添加一列,该列负责您的自定义类别顺序。wp_term_relationships
然后您可以将您的自定义类别顺序放入和这两列中wp_terms
。一切完成后,您可以挂接到 的过滤器get_terms_args
并将 更改orderby
为term_order
。
以下是该技术方法的所有相关链接的列表:
$wpdb->wp_terms
检查我的插件来解决这个问题:WordPress Real Categories Management。WP RCM在 wp terms 表上创建一个额外的字段 term_order。它还带来了许多其他有用的功能,如下面的屏幕截图所示。它允许您以一种很好的方式组织您的 WordPress 类别。它易于使用,只需拖放您的类别并将其移动到特定的顺序即可。该插件适用于所有自定义帖子类型。
从产品描述中我可以引用。如果您想尝试该插件,插件页面上还有一个演示。
这个问题可以通过 wordpress.org 插件存储库中提供的许多免费插件来解决。只需在 WordPress 仪表板 > 插件 > 安装中搜索“类别顺序”即可。
这是内置的wordpress_wp_list_categories
wp_list_categories('orderby=name');
Run Code Online (Sandbox Code Playgroud)
我认为这会对你有所帮助
归档时间: |
|
查看次数: |
52715 次 |
最近记录: |