2017-02-11 1 views
1

사용자 메타를 기준으로 맞춤형 게시물을 주문할 수 있습니까? 내 사용자 정의 유형 게시물 목록에 사용자 이름과 사용자 전화 번호가 표시됩니다. 사용자 ID가 내 게시물의 메타로 있고 주문이 작동합니다. 그러나, 나는 포스트 메신저로 사용자 폰을 가지고 있지 않지만 오히려 그것은 유저 메타이다. 사용자 전화로 게시물을 주문하려면 어떻게해야합니까? 이 작업을 수행하는 쿼리 2 ~ 3 회가되도록 usermeta하여 게시물을 주문 직접적인 기능이없는 것처럼Wordpress : 사용자 메타에 의한 게시물 주문

function order_columns($vars) 
{ 
    if (!is_admin()) { 
     return $vars; 
    } 

    $columns = array(
     'user_id', 
     'expiry_date', 
     'active', 
    ); 

    if (isset($vars['orderby']) && in_array($vars['orderby'], $columns)) { 
     $vars = array_merge($vars, array('meta_key' => $vars['orderby'], 'orderby' => 'meta_value')); 
    } 

    return $vars; 
} 
+0

내가 직접 알고있는 한 (단일 쿼리로)'user_meta '에 의해 게시물을 주문할 수 없습니다. 정렬 된 방식으로'user_id'를 얻고'user_id'에 의해 게시물을 얻거나'post meta' 필드에 전화 번호를 저장해야합니다. 이것이 도움이되기를 바랍니다. 하지만 네, WordPress에서는 불가능하지 않습니다. –

+0

@RaunakGupta 의견을 주셔서 감사합니다. 내가 사용자 ID별로 게시물을 주문할 수있는 방법을 알려주시겠습니까? 사용자 ID로 사용자 ID를 정렬 한 다음 게시물을 주문하는 데이 ID를 어떻게 사용할 수 있습니까? – Jamol

답변

0

: 여기

내가 포스트 메타 게시물을 주문 사용하고있는 코드입니다.

먼저 우리는 당신이 user_id

function wh_get_meta_values($key = '', $type = 'post', $status = 'publish') { 

    global $wpdb; 

    if (empty($key)) 
     return; 

    $r = $wpdb->get_col($wpdb->prepare(" 
     SELECT pm.meta_value FROM {$wpdb->postmeta} pm 
     LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id 
     WHERE pm.meta_key = '%s' 
     AND p.post_status = '%s' 
     AND p.post_type = '%s' ", $key, $status, $type)); 

    return $r; 
} 

이 ^^이 당신의 functions.php 파일을 추가 얻을 사용자 정의 함수를 작성해야이 작업을 수행하는 모든 user_id 형태 postmeta 테이블을 얻을 수 있습니다. 이 도움이


희망!

+0

관리자 페이지 게시물 목록에이 게시물이 필요합니다. 사용자 정의 유형 게시물 목록을 수정합니다. 어떻게하면 거기에 솔루션을 사용할 수 있습니까? – Jamol

+0

오, 그럼 당신은 당신의 질문에 이것을 언급해야합니다. 그리고 관리 게시글 목록을 살펴 보겠습니다. 왜냐하면 나는 그것에 정통 할 것이기 때문입니다. –

0

기능 pre_get_posts을 사용하여 쿼리 및 정렬 방법을 변경할 수 있습니다.

function ta_modify_main_query($query) { 
    if ($query->is_main_query()) { 
     $query->set('orderby', 'meta_value_num'); 
     $query->set('meta_key', '_liked'); 
     $query->set('order', 'DESC'); 
    } 
} 

add_action('pre_get_posts', 'ta_modify_main_query'); 
관련 문제