自定义排序WordPress分类目录

如何自定义排序WordPress 分类目录,非插件实现对WordPress分类目录的自定义排序,这似乎是一个很小的功能,但是更改需要花费很多时间。 如果选择插件,则可以使用:Category Order and Taxonomy Terms Order。 具体实现方案中的代码也从该插件中提取:基本思

如何自定义排序WordPress 分类目录,非插件实现对WordPress分类目录的自定义排序,这似乎是一个很小的功能,但是更改需要花费很多时间。 如果选择插件,则可以使用:Category Order and Taxonomy Terms Order。 具体实现方案中的代码也从该插件中提取:

基本思路是在数据库中添加一个排序字段,然后在取值sql语句中按此字段排序,或者先取出数据,然后按此字段排序;

将排序字段添加到数据库

待修改表的名称为wp_terms,wp_是自定义表的前缀,可以根据实际情况进行搜索;
执行以下sql语句,只需将一个名为term_order的字段添加到wp_terms,tinyint类型,默认为0;

1 ALTER TABLE wp_terms ADD term_order TINYINT DEFAULT 0
  1. 字段的数据类型使用tinyint,值范围为0-255,对我来说,目录创建不会太多,这个范围就足够了; 如果你担心,可以使用int或integer类型
  2. 自定义表前缀可以在根目录的wp-config中找到,此变量为$ table_prefix;。
  3. wp-terms表主要用于放置分类目录和标签等数据。 修改顺序时,仅修改与分类目录有关的数据即可。
    添加字段后,就可以修改顺序。 需要在顶部/前面显示的值较小;

修改取到数据的顺序

1.wp-includes/widgets/class-wp-widget-categories.php 中,排序字段由默认的 name 改为 term_order;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public function widget($args, $instance){
// …… 省略的其他代码
if ($title) {
echo $args[‘before_title’] . $title . $args[‘after_title’];
}

$cat_args = array(
‘orderby’ => ‘term_order’, // name 改为 term_order
‘show_count’ => $c,
‘hierarchical’ => $h,
);
echo ‘orderby-000’;
// …… 省略的其他代码
}

此处的代码不能保证一定是只有目录组件用到了,但至少从现在的页面布局下,只有分类目录这个地方输出了 “orderby-000”;后台中的分类目录管理也没有输出;
2.在主题下的 functions.php 的最后,添加下面的代码:

1
2
3
4
5
6
7
8
9
10
11
function hook_get_terms_orderby($orderby, $args)
{
if ( apply_filters(‘to/get_terms_orderby/ignore’, FALSE, $orderby, $args) )
return $orderby;

if (isset($args[‘orderby’]) && $args[‘orderby’] == "term_order" && $orderby != "term_order")
return "t.term_order";

return $orderby;
}
add_filter(‘get_terms_orderby’, ‘hook_get_terms_orderby’, 1, 2);

这段代码加了一个 get_term_orderby 过滤器,对 sql 语句中的 orderby 进行重置;

  1. 这段代码的大体意思是如果 $args[‘orderby’] – 原始传过来的排序字段是 term_order,修改之后的 $orderby 不是 term_order,就重置为 t.term_order;
  2. 第二步中修改的两个地方是相关的,2.1 中的字段和 2.2 中的 if 判断,是一个值,所以也可以把 term_order 替换成表中的其他字段或自定义字符串都可以,只要两边统一就好;只要保证过滤器最终返回 t.term_order 就可以;

排序功能到这里就完成了!!当然为了节省时间,建议小白用插件。

您已阅读完《wordpress(共168篇)》专题的第 129 篇。请继续阅读该专题下面的文章:

    购买必读
    本站模板没有任何后门,也不会和我们服务器有任何通信,请您放心使用。
    本源码一次性买断,没有二次费用,并享受免费更新。
    在使用本站模板时,请不要使用我们的产品从事违反中华人民共和国法律、违反公序良俗的活动,否则我们有权拒绝服务,并配合有关单位予以处置。如果您不符合条件,请勿购买。
    售后是指通过QQ与客服联系处理问题,售后过期不影响您对主题的使用和更新。免费三个月售后服务。售后服务时间为工作日早9点到晚5点。如果不在线可以QQ留言,我们会尽快给您答复。
    售后服务包括程序的使用、BUG的处理、意见建议等。不包括技术服务、网站优化、二次开发、环境配置、服务器运维等。
    代码类商品属于数字化商品,具有可复制性,不支持退款,详见《网络交易管理办法》第二章 第16条 第三类。
    请仔细阅读我们的用户协议:用户协议

    给TA打赏
    共{{data.count}}人
    人已打赏
    wordpress教程

    当WordPress中有多个分类目录时,如何设置为仅显示一个

    2023-12-9 15:46:52

    wordpress教程

    如何在WordPress中制作虚拟Robots.txt文件

    2023-12-9 15:46:53

    0 条回复 A文章作者 M管理员
      暂无讨论,说说你的看法吧

    线

    专属客服

    (工作日 10:00 - 22:30 为您服务)

    2026-09-14 07:21:16

    您好,无论是售前、售后、意见建议……均可通过联系工单与我们取得联系。

    猜你想问:

    • 购买的模板免费包安装吗?

    • 这个演示地址有吗?

    • 购买vip会员可以下载哪些模板?

    您的工单我们已经收到,我们将会尽快跟您联系!
    取消

    您想了解哪方面的问题?

    选择聊天工具: