2014-10-12 6 views
3

주어진 카테고리 내에서 게시물 형식이 '비디오'또는 '이미지'인 모든 게시물을 반복하는 방법을 찾고있는 WP_Query Codex을 읽었습니다.카테고리 내의 두 가지 게시물 형식의 게시물

이 수가 충분하지 않은 경우이 카테고리는 변수 $catslug (이 방법이 필요합니다)로 지정됩니다.

I는 다음과 같은

  • 이미지 또는 비디오

  • 이미지 및 카테고리

  • 비디오 및 카테고리 중 하나를 통해 반복하는 방법을 발견,

하지만 내가 필요한 것은 다음과 같이 더 복잡합니다.

post-format-image$catslug) OR (post-format-video$catslug)

IT는 tax_query 내에서 tax_query을 할 수 있습니까? 이 같은

뭔가 :

$args = array(
    'post_type' => 'post', 
    'tax_query' => array(
     'relation' => 'OR', 
     'tax_query' => array(
      'relation' => 'AND', 
      array(
       'taxonomy' => 'category', 
       'field' => 'slug', 
       'terms' => array($catslug) 
      ), 
      array(
       'taxonomy' => 'post_format', 
       'field' => 'slug', 
       'terms' => array('post-format-image') 
      ) 
     ), 
     'tax_query' => array(
      'relation' => 'AND', 
      array(
       'taxonomy' => 'category', 
       'field' => 'slug', 
       'terms' => array($catslug) 
      ), 
      array(
       'taxonomy' => 'post_format', 
       'field' => 'slug', 
       'terms' => array('post-format-video') 
      ) 
     ) 
    ) 
); 
$query = new WP_Query($args); 

누구나 어떤 해결 방법 또는이 얻을 수있는 해킹을 알고있다? 아마도 나는 잘못된 생각을하고있을뿐입니다.

답변

1

이것은 실제로 좋은 질문입니다. 간단한 대답은 여러 개의 tax_query을 사용할 수 없다는 것입니다.

작업하기 전에 다음 시나리오를 신속하게 테스트 할 수있었습니다. 그냥 재미로 가서 tax_query으로 카테고리 매개 변수를 사용하려고했지만 원하는 카테고리의 게시물과 두 게시물 형식의 게시물을 모두 보냈습니다

나는 가능한 해결책을 찾았습니다. 지금 당장은 이것을 테스트 할 수 없습니다. 여기

여기하지만 내 라인 : 당신이 임의의 결과를 필요로

, 난 당신이 배열로 게시물 형식을 추가하는 것이 제안

$post_format_array = array('post-format-video', 'post-format-image'); 

이제 shuffle를 사용하려고 배열을 뒤섞어 놓은 다음 해당 배열에서 첫 번째 항목을 가져옵니다.이 항목은 이미지의 비디오 일 것이며 tax_query에서 사용할 수 있습니다.

shuffle($post_format_array);  

이렇게하면 원하는 카테고리 및 비디오 또는 이미지 게시 형식의 게시물을 받게됩니다.

$args = array(
    'post_type' => 'post', 
    'tax_query' => array(
    'relation' => 'AND', 
     array(
     'taxonomy' => 'category', 
     'field' => 'slug', 
     'terms' => $catslug, 
    ), 
     array(
     'taxonomy' => 'post_format', 
     'field' => 'slug', 
     'terms' => $post_format_array[0] 
    ), 
    ), 
); 
$query = new WP_Query($args); 
+0

답장을 보내 주신 @Pieter. 귀하의 코드를 테스트 한 결과 완벽하게 작동합니다 (: – RMajidi