方法#1-如果要修改schedule_day_taxonomy
术语清单,单列schedule
cpt编辑屏幕,然后我们可以使用以下设置:
add_action( \'load-post.php\', function()
{
add_filter( \'wp_terms_checklist_args\', \'wpse_terms_checklist_args\' );
} );
function wpse_terms_checklist_args( $args )
{
// Target the \'schedule\' custom post type edit screen
if( \'schedule\' === get_current_screen()->id )
add_filter( \'get_terms_args\', \'wpse_terms_args\', 10, 2 );
return $args;
}
function wpse_terms_args( $args, $taxonomies )
{
// Target the \'all\' tab in the \'schedule_day_taxonomy\' terms check list
if(
isset( $args[\'get\'] )
&& \'all\' === $args[\'get\']
&& isset( $taxonomies[0] )
&& \'schedule_day_taxonomy\' === $taxonomies[0]
) {
// Modify the term order
$args[\'orderby\'] = \'ID\'; // <-- Adjust this to your needs!
$args[\'order\'] = \'ASC\'; // <-- Adjust this to your needs!
// House cleaning - Remove the filter callbacks
remove_filter( current_filter(), __FUNCTION__ );
remove_filter( \'wp_terms_checklist_args\', \'wpse_terms_checklist_args\' );
}
return $args;
}
另一种可能性是将其合并为一个
get_terms_args
筛选器回调。
获取次日订单:
Sun, Mon, Tue, Wed, Thu, Fri, Sat
我们可以修改相应的术语slug并使用:
// Modify the term order
$args[\'orderby\'] = \'slug\';
$args[\'order\'] = \'ASC\';
方法2-对查询结果重新排序如果我们不想修改slug,那么这里有另一种方法。
我们可以按照与本地化的工作日相同的顺序重新排序生成的术语数组。
add_filter( \'wp_terms_checklist_args\', function( $args )
{
add_filter( \'get_terms\', \'wpse_get_terms\', 10, 3 );
return $args;
} );
function wpse_get_terms( $terms, $taxonomies, $args )
{
if( isset( $taxonomies[0] )
&& \'schedule_day_taxonomy\' === $taxonomies[0]
&& \'schedule\' === get_current_screen()->id
) {
$newterms = [];
foreach( (array) $GLOBALS[\'wp_locale\']->weekday as $day )
{
foreach( (array) $terms as $term )
{
if( $term->name === $day )
$newterms[] = $term;
}
}
remove_filter( current_filter(), __FUNCTION__ );
if( 7 === count( $newterms ) )
$terms = $newterms;
}
return $terms;
}
我们还可以替换
$GLOBALS[\'wp_locale\']->weekday
使用自定义工作日数组,按自定义方式排序。
以下是英文版:
这是冰岛语版本:
方法#3-自定义SQL排序
我们可以使用
get_terms_orderby
过滤器,带有
CASE/WHEN/THEN
设置。
希望您可以根据自己的需要进行调整。