2017-10-30 12 views
0

게시 유형을 메타 값으로 쿼리하려고했으나 배열의 [0] 필드에 값이 있습니다.postmeta에 의한 Wp 쿼리의 배열 필드 [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(); 

확실히 어떤 게시물이 보이지 않습니까? 당신이 메타 값으로 선택한 여러 값을 저장할 때 ID = 53, 다음 통과해야 선택한 게시물을 얻으려면

+0

my_post_multicheckbox [0]과 (과) 무슨 관계가 있습니까? 그리고 왜 메타 쿼리에'$ current_post_ID'가 있습니까? 그리고 WP는 자동으로 처리됩니다 - 그냥 원시 값을 넣으면 '직렬화'할 필요가 없습니다. –

+0

게시물 유형 '이벤트'와 게시물 유형 '위치'사이의 관계를 만들기 위해 CMB2 첨부 파일을 사용하고 있습니다. 모든 이벤트에 대해 해당 위치의 ID를 첨부합니다. 이제 나의 단일 장소에서 나는 그 장소의 사건들을 원한다. $ current_post_ID는 위치의 ID입니다. 이벤트의 연결된 ID가 현재 위치의 ID와 같으면 마술처럼 내 이벤트 목록을 갖습니다! 내 생각은 메타 값에 의한 쿼리 이벤트입니다. 여기서 키는 내 게시물 메타 (my_post_multicheckbox)이고 값은 현재 위치 ID입니다. –

답변

0

, 그 값은 지금

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

같은 직렬화를 양식에 저장되고있다 메타 쿼리의 "비교"매개 변수는 "좋아요"와 같습니다. 기본적으로 "="조건과 비교됩니다.

그래서 Wp_query은 다음과 같아야합니다 '처럼', 당신은 'IN'을 통과 값에, 당신이 통과해야 할 필요가 대신

$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); 

여러 ID로 게시물을 가져하려면

, 게시물을 가져올 ID의 배열입니다.

+0

예, 그게 효과가 있습니다! 고마워. –