2017-10-30 25 views
0

私はポストタイプをメタ値でクエリしようとしていますが、値は配列の[0]フィールドです。postmetaによるWp query in array field [0]

$args = array('post_type'=>'event','meta_query' => array(
    array(
     'key' => 'my_post_multicheckbox', 
     // The right value should be my_post_multicheckbox[0] 
     // and it's serialized 
     'value' => serialize($current_post_ID) 
    ) 
)); 
$events = new WP_Query($args); 
while ($events->have_posts()):$events->the_post(); 
the_title(); 
endwhile; 
wp_reset_query(); 

明らかに投稿は表示されません。

+0

「my_post_multicheckbox [0]」と何が関係していますか?そしてなぜあなたは '$ current_post_ID'をあなたのメタ・クエリに持っていますか?そして、あなたは 'シリアル化 'する必要はありません - WPは自動的にそれを処理します - 生の値を置くだけです。 –

+0

私は、ポストタイプ 'イベント'とポストタイプ 'ロケーション'の間の関係を作るために、CMB2添付ファイルポストを使用しています。すべてのイベントについて、その場所のIDを添付します。今私の単一の場所で、私はその場所のイベントをしたいです。 $ current_post_IDはロケーションのIDです。イベントのアタッチされたIDが現在のロケーションのIDと同じであれば、私は魔法のように私のイベントリストを持っています!私のアイデアは、キーが私のポストメタ(my_post_multicheckbox)で、値が現在の位置IDであるメタ値によるクエリイベントです。 –

答えて

0

あなたはメタ値として選択した複数の値を格納するときは、ID = 53を選択したポストを取得したい場合

a:2:{i:0;s:2:"53";i:1;s:2:"54";} // where 53 and 54 are 2 selected ids. 

今、あなたが通過する必要があるように、その値は連載形式で保存されていますメタクエリの「類似」パラメータを「類似」と比較します。デフォルトでは、 "="条件と比較されます。

だからあなたWp_queryは、次のようにする必要があります:

$args = array('post_type'=>'event','meta_query' => array(
    array(
     'key' => 'my_post_multicheckbox', 
     // The right value should be my_post_multicheckbox[0] 
     // and it's serialized 
     'value' => $current_post_ID, // this should not be serialise value. 
     'type' => 'CHAR', 
     'compare' => 'LIKE', 
    ) 
)); 
$events = new WP_Query($args); 

あなたは「のような」、あなたは「IN」とし、値にを渡す必要があるのではなく、複数のIdでポストを取得したい場合は、あなたが渡す必要があります投稿を取得するIDの配列。

+0

はい、それは仕事です!みんなありがとう –