2017-02-11 11 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を取得できますし、そのユーザーは投稿の注文にどのように使用するのですか? – 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');