显式按插件顺序获取分类
$terms = get_terms(array(
'taxonomy' => 'category',
'orderby' => 'xintheme_term_order',
));
跳过插件排序
$terms = get_terms(array(
'taxonomy' => 'category',
'ignore_xintheme_term_order' => true,
));
当某个查询需要保持 WordPress 默认排序,或由主题、插件自行控制排序时,可以传入 ignore_xintheme_term_order => true。
Hooks 与扩展
跳过某些查询的排序
通过 xintheme_term_order/ignore 可以让指定查询跳过插件排序。
add_filter('xintheme_term_order/ignore', function($ignore, $orderby, $args) {
if (!empty($args['taxonomy']) && in_array('your_taxonomy', (array) $args['taxonomy'], true)) {
return true;
}
return $ignore;
}, 10, 3);
排序更新后执行逻辑
排序值发生变化并保存后,会触发 xintheme_term_order/updated。
add_action('xintheme_term_order/updated', function() {
// 排序保存后执行自定义逻辑。
});
数据存储
插件使用 term meta 保存排序值,meta key 为:
_xintheme_term_order
排序值为从 1 开始的整数。保存时插件只更新排序值发生变化的分类项,减少不必要的数据库写入。
插件不会修改 wp_terms 表结构,也不会新增自定义数据表。