tl;dr
这是不可能的
tax_query
.
A.tax_query
是对交付结果的限制,不用于订购帖子。您使用Order & Orderby Parameters 为此。
这与统计学和数学有关,因为分类学是nominal scale, 这意味着它只是一个分类,每个项目都在同一个级别上。就像眼睛的颜色一样,你不能说用这些数据哪个更好。
要排序数据,必须对数据进行某种比较。这被称为ordinal scale, (是的,词序是按序排列的),例如3大于2大于1,因此你可以先按最小或最大的顺序排列(ASC
和DESC
). 请注意title
也遵循顺序刻度,但不是通过内容的比较,而是通过字母表的刻度。
*完整地说,还有interval scale 以及ratio scale, 但这些与WordPress查询无关。
回到WordPress,现在我们了解到,您不能对分类法进行排序(没有元数据),您可以使用它来定义结果应该具有的一组特征。
在tax_query
你定义了一组帖子应该具备的特征,仅此而已。请不要认为集合也可以是一个限制,如NOT IN
.
使用定义限制后tax_query
(公平地说,meta_query
对不同的数据做同样的事情),您可以告诉WordPress如何根据可测量的变量(可以是整数、字母或任何其他顺序标度)对结果排序。
通过添加
\'order\' => \'ASC\', // Order Ascending
\'orderby\' => \'title\', // Order by Title
到您的
$args
大堆
然而,一个可能的解决方案是按顺序查询限制,而不是全部查询。请注意,这种方法对于数据库来说比较重。
在我的示例中,我使用一个数组来定义分类法的顺序,并在这个数组中循环,查询它自己的每个分类法。
通过将分类法放入一个有序数组中,我为其添加了顺序功能。分类法本身仍然是名义上的
$taxonomies = array(
\'editor-in-chief\',
\'managing-editor\',
\'fiction-editor\',
\'poetry-editor\',
\'nonfiction-editor\',
\'production-manager\'
);
foreach( $taxonomies as $thistaxonomy ) {
$args = array(
\'post_type\' => \'staff\',
\'posts_per_page\' => \'-1\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'staff-title\',
\'field\' => \'slug\',
\'terms\' => array(
$thistaxonomy
)
)
)
);
/* All your query and magic down there */
}
希望这对你有用!