I wanted to change the default taxonomy terms order by its ‘term_order’ value instead of ‘name’ in admin side. So I tried something like below. But it doesn’t work and php memory exhaust.
function uc_order_term( $wp_query ) {
$wp_query->query(
array(
'taxonomy' => 'category',
'orderby' => 'term_order',
'order' => 'ASC'
)
);
}
add_action( 'pre_get_terms', 'uc_order_term');
However in similar way I tried to sort posts by menu_order and it works.
function uc_order_post( $wp_query ) {
$wp_query->set('orderby', 'menu_order');
$wp_query->set('order', 'ASC');
}
add_action( 'pre_get_posts', 'uc_order_post', 1 );
2 Answers
Now I am able to sort taxonomy terms by term_order using below snippets. But I am still seeking answer for the original question “How to do it using pre_get_terms”.
function foo_tax_order($orderby, $args){
return 't.term_order';
}
add_filter('get_terms_orderby', 'foo_tax_order', 10, 2);