2011-05-13 3 views
4

일부 맞춤 메타 상자를 만들기 위해 : http://www.farinspace.com/how-to-create-custom-wordpress-meta-box/ 함수를 사용하고 있습니다.Wordpress meta_query 키 배열

내 WP_Query은 다음과 같습니다

  $args = array(
       'post_type' => 'testimonials', 
       'post_status' => 'publish', 
       'orderby' => checked((bool) $instance['testimonials_random'], true, false) ? 'rand' : 'id', 
       'posts_per_page' => $testimonials_number, 
       'paged' => get_query_var('page'), 
       'meta_query' => array(
        array(
         'key' => '_my_meta["addtosidebar"]', 
         'value' => 'on', 
         'compare' => 'LIKE' 
        ) 
       ) 
      ); 
      $query = new WP_Query($args); 

입력 체크 박스 addtosidebar은 다음과 같습니다 <input type="checkbox" name="_my_meta[addtosidebar]" <?php checked((bool) $meta['addtosidebar'], true); ?> class="checkbox" />

나는 meta_query의 키에 액세스 할 수있는 방법이 어떤 생각을 가지고 있습니까?

덕분에, CIP

답변

4

나는 당신이 메타 값에 링크 된 튜토리얼로 다음 단일 데이터베이스 필드에 직렬화 된 배열에 저장되어 있다고 할 수 있다고 생각하지 않습니다. 그래서 데이터베이스에 다음과 같이 끝납니다 : a:4:{s:12:"addtosidebar";s:2:"on";s:3:"foo";s:3:"bar";}.

다음 메타 쿼리가 작동하지만 별개의 사용자 지정 필드를 사용하는 것이 좋습니다.

이것은 나를 위해 일한
'meta_query' => array(
    array(
    'key' => '_my_meta', 
    'value' => 's:12:"addtosidebar";s:2:"on";', 
    'compare' => 'LIKE' 
) 
) 
+1

그것은 같았다 :'meta_query '=> 어레이 ( 어레이 ( '키 '=>'_my_meta ' '값 '=>'addtosidebar ' '비교 '=>'LIKE ' ) )' –

1
it was like this: 'meta_query' => array(array('key' => '_my_meta', 'value' => 'addtosidebar', 'compare' => 'LIKE')) – CIPPO Design 

, 나는 그 대답으로 추가해야한다고 생각. 리차드가 데이터베이스의 항목을 직렬화한다고 지적한 한 가지는 따라서 'LIKE'는 기본적으로 해당 문자열에서 'value' 'addtosidebar'를 찾습니다.

I 이런 메타 배열 경우 :

후 1 :

$myMeta = array('medium' => 'video', 'sometext' => 'a beautiful video') 

포스트 2

$myMeta = array ('medium' => 'image', 'sometext' => 'a beautiful image of a video button') 

'에 비교'LIKE '를 이용 것을 의미 동영상 '은 두 번째 게시물의'sometext '값에서 동영상이 발견 될 때 둘 다 반환됩니다. 나는 그것을 제한 할 인용 부호를 추가했다는 것을 중지하려면 누군가 내가 이해하기 위해 관리하는 데 도움이됩니다

$query->set('meta_query' , array(
           array(
           'key' => 'blogInfo', 
           'value' => '"video"', 
           'compare' => 'LIKE' 
          ) 
          )); 

희망을.

ps : 죄송합니다. 미안하지만 논평하기에 충분하지 않습니다.