Я создал специальную таксономию под названием «attach_cats» для мультимедийных вложений. Каждый термин в таксономии имеет метаданные настраиваемого термина с ключом term_order и мета-значением целого числа. Я добавил настраиваемый столбец на страницу "edit-tag.php", который отображает значение 'term_order'.
Теперь я хотел бы упорядочить термины по значению term_order. Я все время делаю это на странице "edit.php? Post_type = page" с помощью следующей функции:
add_action('pre_get_posts', 'sort_by_meta_key');
function sort_by_meta_key($query){
global $pagenow;
if(is_admin()
&& 'edit.php' == $pagenow
&& isset($_GET['post_type']) && $_GET['post_type']=='gallery'){
$query->set( 'meta_key', 'gallery_pos' );
$query->set( 'orderby', 'meta_value_num' );
$query->set( 'order', 'ASC' );
}
}
Но когда я пытаюсь сделать это с помощью «терминов» вместо «сообщений», используя «pre_get_terms», это не срабатывает. Вот что у меня есть:
add_action('pre_get_terms', 'term_sort_order');
function term_sort_order($query){
global $pagenow;
if(is_admin()
&& 'edit-tags.php' == $pagenow
&& isset($_GET['post_type'] ) && $_GET['post_type']=='attachment' ){
$query->set( 'meta_key', 'term_order' );
$query->set( 'orderby', 'meta_value_num' );
$query->set( 'order', 'ASC' );
}
}
// THIS RETURNS: Fatal error: Call to undefined method WP_Term_Query::set() ......
Любая помощь будет принята с благодарностью.