在非分层分类中保留每个帖子的术语顺序

时间:2016-12-17 作者:ninestories

我正在寻找一种最简单的方法,以每个帖子为基础,在非层次分类法中保持术语顺序。我以前能够在中使用以下代码实现这一点register_taxonomy 加上get_the_terms 滤器

\'sort\' => true,
\'args\' => array( \'orderby\' => \'term_order\' ),
从WordPress 4.7开始,这似乎不再有效sort 参数似乎不再起任何作用。

我所需要的只是能够在添加/编辑帖子页面的“水果”分类字段中输入“香蕉、苹果、梨”,并在我按“发布”或“更新”后保留该术语顺序下一篇帖子可能会列出“梨、香蕉、苹果”。现在,即使我可以在首次发布后保留原始顺序,因为它在管理页面上按字母顺序排列,任何原始顺序在后续发布/更新帖子时都会丢失。

我是否可以应用一个过滤器来防止值按字母顺序重新排序,或者实际的术语顺序是否需要保存为单独的元数据?

作为参考,我最初使用的代码(我在这里看到它被重用来回答类似的问题)位于本页底部:https://core.trac.wordpress.org/ticket/5857term_order 此处将进一步详细讨论:https://core.trac.wordpress.org/ticket/9547

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

我遇到了一个类似的问题,我就是这样解决的。注意,我输入Fruits 作为基于示例的分类名称。重要的是,此名称与分类名称完全匹配。分类名称通常是单数的,即。fruit

function wp4382_filter_terms_order( $orderby, $query_vars, $taxonomies ) {
    if ( ! empty( $query_vars[\'object_ids\'] )
        && ! empty( $taxonomies[0] )
        && ( 1 === count( $taxonomies ) )
        && \'Fruits\' === $taxonomies[0] )
    {
        $orderby = \'tr.term_order\';
    }
    return $orderby;
}

add_filter( \'get_terms_orderby\', \'wp4382_filter_terms_order\', 10, 3 );

相关推荐

如何修改WP_INCLUDE/BLOCKS/LATEST_posts.php

我是WordPress开发的初学者,希望得到一些帮助。我在一个简单的WordPress网站上工作。基本上,用户希望在主页上显示最新的帖子。我使用了最新帖子块,并将其设置为显示整个帖子内容,现在用户不希望帖子标题链接到单个帖子页面(因为帖子的内容显示在主页上)。如何安全地修改模板文件,使其像h2标记一样使用,而不是在主题中使用的href标记。我知道您可以创建子主题并修改wp_content 文件,但我不确定如何处理中的文件wp_include. 我读到一些关于修改functions.php 但我不确定,如果