我为媒体附件创建了一个名为“attach_cats”的自定义分类法。分类中的每个术语都有自定义术语元数据,键为“term_order”,元值为整数。我在“edit-tag.php”页面中添加了一个自定义列,显示“term_order”的值。
现在我想将条款订购为'orderby''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() ......
任何帮助将不胜感激。