2017-05-05 4 views
1

私は、添付ファイル用に「attach_cats」というカスタムタクソノミーを作成しました。タクソノミーの各用語には、term_orderのキーと整数のメタ値を持つカスタム用語メタデータがあります。私は、 "term_order"の値を表示する "edit-tag.php"ページにカスタム列を追加しました。カスタムメタデータによるカスタム分類の並べ替え(pre_get_terms)

ここで、用語を 'orderby'に 'term_order'の値を注文したいと思います。私が代わりに「pre_get_terms」を使用して「投稿」の「用語」でそれを実行しようとするとき、

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'); 
    } 
} 

しかし:私は、次の機能を持つ「?个人设定post_type =ページ」で、このすべての時間を行いますそれは動作しません。ここに私が持っているものがあります:

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() ...... 

私は助けていただければ幸いです。

答えて

0

はこれを試してみてください。

https://pastebin.com/vr2sCKzX

public function pre_get_terms($query) { 
    $meta_query_args = array(
     'relation' => 'AND', // Optional, defaults to "AND" 
     array(
      'key'  => 'order_index', 
      'value' => 0, 
      'compare' => '>=' 
     ) 
    ); 
    $meta_query = new WP_Meta_Query($meta_query_args); 
    $query->meta_query = $meta_query; 
    $query->orderby = 'position_clause'; 
} 
+0

pre_get_termsのアクションがあり、コールバック関数ではこれを試してみる必要があります。私のために働いた。ソリューションは、このリンクのコメントに来ました:https://core.trac.wordpress.org/ticket/34996 eherman24のコメント –

+0

返事をありがとう、6ヶ月されているが、私はやっていないそれ以来そのプロジェクトの他のもの(それは私が構築していた個人的なプラグインでした)....私は明日にそれに戻り、これを試してみます...ありがとう。 – Jeremy

0

は私のために、私は、カスタム分類を行い、そのカスタム分類に私は、カスタムメタを持っていました。私は管理者のバックエンドに列を持ち、それをソート可能にしたかったのです。カスタムメタでカスタムタクソノミのソート可能な作業を行うために、私はこれを行いました。

https://pastebin.com/vr2sCKzX

public function pre_get_terms($query) { 
$meta_query_args = array(
    'relation' => 'AND', // Optional, defaults to "AND" 
    array(
     'key'  => 'order_index', 
     'value' => 0, 
     'compare' => '>=' 
    ) 
); 
$meta_query = new WP_Meta_Query($meta_query_args); 
$query->meta_query = $meta_query; 
$query->orderby = 'position_clause'; 

} 私はちょうど

だけで追加することを忘れていけないeherman24 @によってコメントで提供さ答えを適応しなければならなかったhttps://core.trac.wordpress.org/ticket/34996

このリンクで答えを見つけましたアクションフックpre_get_termsを使用して上記のコールバックを使用します。

関連する問題