get_terms
does not support a post__in
argument 我看不出有任何其他论点可以让你强行下命令。但是,您可以使用一个或至少两个过滤器来完成此操作:
function gto_forced_order($orderby) {
$orderby = "FIELD(t.term_id,5,1,4)";
return $orderby;
}
add_filter(\'get_terms_orderby\',\'gto_forced_order\');
$terms = get_terms(\'category\');
var_dump($terms);
或。。。
function gto_forced_order($pieces) {
$pieces[\'orderby\'] = "ORDER BY FIELD(t.term_id,5,1,4)";
return $pieces;
}
add_filter(\'terms_clauses\',\'gto_forced_order\');
那个
5,1,4
是术语ID。查询将按此处给出的内容进行排序。
这些过滤器都将在全球范围内工作,将每个调用更改为get_terms
, 但通过使用过滤器提供的其他参数,您可以控制过滤器的运行位置。
function gto_forced_order($pieces,$taxonomies,$args) {
if (in_array(\'category\',$taxonomies)) {
$pieces[\'orderby\'] = "ORDER BY FIELD(t.term_id,5,1,4)";
}
return $pieces;
}
add_filter(\'terms_clauses\',\'gto_forced_order\',1,3);
如果您添加
var_dump($pieces,$taxonomies,$args)
在回调的顶部,您可以看到您必须处理的内容(尽管这会造成混乱——只是调试)。
类似于get_terms_orderby
但是parameters are a bit different.