포스트 루프에서 맞춤 분류법을 제외시키는 방법


22

루프에서 사용자 정의 분류 체계에서 모든 게시물을 제외하는 간단하거나 쉬운 방법이 있습니까? 나는 높고 낮게 보았고 SE, SO 또는 Google은 정답을 보이지 않는 것 같습니다.

WPDB 쿼리를 통해 수행 할 수 있다는 것을 알고 있지만 상당히 단순 해야하는 것을 뛰어 넘을 수있는 거대한 밧줄처럼 보입니다.


5
해당 분류 체계에 용어가 있거나 사용자 정의 분류 체계의 특정 용어를 언급하고있는 게시물이 있습니까? 예 : 분류가 과일이고 사과와 주황색이라는 두 개의 용어가있는 경우 과일이있는 모든 게시물이나 사과가있는 게시물 만 제외하고 싶습니까?
t31os

@ t31os를 확장하려면 Q : post_tag, category, link_category 등은 모두 _builtin 분류 체계입니다. 따라서 게시물 태그를 "용어"라고하더라도 여전히 분류 체계 (비 계층 적)이며 "카테고리"(계층 적) 분류 체계와 동일한 "수준"입니다.
kaiser

@ t31os 예제를 계속하려면 : 분류 기준 과일에있는 모든 게시물을 제외하려고합니다 ( '사과', '배'또는 '오렌지'에 관계없이).
Thomas

답변:


13

NOT EXISTS연산자를 분류 체계 슬러그 전달과 함께 사용 하여 루프 내에서 사용자 정의 분류 체계에서 선택한 범주를 포함하지 않도록 쿼리에 지시합니다.

분류법 "과일"(과일 종류에 관계없이)에있는 모든 게시물을 제외하려면 스 니펫이 있습니다.

$args = array(
    'post_type'      => 'post',
    'tax_query'      => array(
        array(
            'taxonomy' => 'fruit',
            'operator' => 'NOT EXISTS'
        )
    )
);

$query = new WP_Query( $args );

2
이것은 NOT INXX number of을 말하는 것보다 더 효율적인 것 같습니다 terms. 이 용어 목록은 크게 커질 수 있지만,이 용어는 해당 분류법 이름으로 모든 용어를 포함해야합니다.
italiansoda

이것은 OP의 질문에 대한 답변이지만 (대개), 대부분의 사람들은 특정 용어 또는 용어 집합을 제외하고 싶을 것입니다. 이를 위해이 답변 을 원합니다 .
rinogo

26

이것에 대한 해결책은 실제로 그렇게 공개 된 것은 아니지만 그래야합니다.

다음을 수행 할 수 있습니다.

$args['tax_query'] = array(
    array(
        'taxonomy' => 'category',
        'terms' => array('cat', 'dog'),
        'field' => 'slug',
        'operator' => 'NOT IN',
    ),
);
query_posts($args);

연산자 인수는 다른 용어를 사용할 수 있지만 위 코드는 기본적으로 'cat'또는 'dog'이라는 용어가없는 분류법 '카테고리'에서 모든 게시물을 가져옵니다.


영리한. 그러나 여전히 분류 체계의 모든 용어를 수동으로 입력해야합니까?
Thomas

나는 당신을 미안하지 않습니다. 용어 배열에서 루프 쿼리에서 제외 할 용어 값을 정의합니다. 동적이되도록하려면 각 게시물에 사용자 지정 메타 값을 추가 한 다음 쿼리에서 해당 메타 키의 값을 확인하여 원하는 방식으로 설정할 수 있습니다.
Dwayne Charrington

아 무슨 말인지 알지만 정말 번거 롭습니다.
Thomas

나는 실제로 보지 않았지만 확실히 당신이 요구하는 것을하는 플러그인이 있어야합니까?
Dwayne Charrington

8

다음은 맞춤 게시물 유형 및 맞춤 분류법에 대해 수행하는 방법입니다.

$happening = new WP_Query(
array( 
  'post_type'  => 'news',        // only query News post type
  'tax_query' => array(
    array(
        'taxonomy'  => 'news-cat',
        'field'     => 'slug',
        'terms'     => 'media', // exclude items media items in the news-cat custom taxonomy
        'operator'  => 'NOT IN')

        ),
   )
);

이것은 사용자 정의 게시물 유형에서 사용자 정의 분류를 제외하는 데 완벽하게 작동했습니다. 스 니펫을 끝내기 위해 쿼리 루프 코드를 추가하려고합니다. while ($ the_query-> have_posts ()) : $ the_query-> the_post ();


0

특정 분류 용어에서 게시물을 제외하기 위해 다음을 수행했습니다.

$argos = array( 
    'tax_query' =>  array (
        array(
            'taxonomy' => 'topics', // My Custom Taxonomy
            'terms' => 'college', // My Taxonomy Term that I wanted to exclude
            'field' => 'slug', // Whether I am passing term Slug or term ID
            'operator' => 'NOT IN', // Selection operator - use IN to include, NOT IN to exclude
        ),
    ),
    'post_type'=>'page', // Post type I want to show, can be a custom post type too
    'posts_per_page' => -1,
    'orderby' => 'title',
    'order'=>'ASC',
    'post_parent' =>$post->ID // show child posts or pages of current page/post
); 

$query = new WP_Query( $args );

0
query_posts( array(
    'post_type' => 'listings',
    'tax_query' => array(
        array(
            'taxonomy' => 'status',
            'field'    => 'slug',
            'terms'    => 'sold',
            'operator' => 'NOT IN'
            ),
        )
    )
);

이 코드는 post_type => 리스팅에서 판매 된 상태 =>를 제외합니다.


-1

나는 잘 작동하는 것처럼 보이는 "RYO 'Category Visibility'WordPress Plugin"을 사용합니다.

관리자 페이지에서 다양한 영역에서 표시되거나 제외되는 범주를 결정할 수 있습니다.

http://ryowebsite.com/wp-plugins/category-visibility/

-아담


4
이 작업을 수행하기 위해 추가 플러그인을 설치 해야하는 것이 상단에있는 것 같습니다. 차라리 의존성을 최소화하고 루프 에서이 작업을 수행 할 수있는 방법이 있어야합니다.
Thomas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.