2017-05-05 14 views
1

미디어 첨부 파일에 'attach_cats'라는 사용자 지정 분류 체계를 만들었습니다. 택 소노 미의 각 용어는 'term_order'키와 정수의 메타 값을 가진 사용자 정의 용어 메타 데이터를가집니다. 'term_order'의 값을 표시하는 'edit-tag.php'페이지에 맞춤 항목을 추가했습니다.사용자 지정 메타 데이터 별 사용자 지정 분류 정리 (pre_get_terms)

이제 term을 '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'); 
    } 
} 

을하지만 : 나는 다음과 같은 기능을 사용하여에이에게 "? edit.php 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'; 

} 나는 https://core.trac.wordpress.org/ticket/34996

난 그냥 의해 코멘트에서 제공하는 대답을 적용했다이 링크에서 답을 찾을 @ eherman24

단지를 추가하는 것을 잊지 말아 action hook pre_get_terms 그리고 위에 제공된 콜백을 사용하십시오.