programing

WP_Query Woocommerce 제품은 여러 카테고리에 속하며 tax_query만 해당됩니다.

megabox 2023. 2. 7. 19:41
반응형

WP_Query Woocommerce 제품은 여러 카테고리에 속하며 tax_query만 해당됩니다.

사용하고 있다WP_QueryWoocommerce 제품의 경우 특정 카테고리의 제품을 쿼리하려고 합니다.이것은 나에게 효과가 있었던 구문이다.

$args = array(
    'posts_per_page' => -1,
    'product_cat' => 'category-slug-here',
    'post_type' => 'product',
    'orderby' => 'title',
);
$the_query = new WP_Query( $args );
// The Loop
while ( $the_query->have_posts() ) {
    $the_query->the_post();
    echo '' . get_the_title() . '<br /><br />';
}
wp_reset_postdata();

데이터를 반환하지만 카테고리 slug가 아닌 ID를 필터에 전달하고 여러 카테고리에 있는 제품만 찾습니다.

의론product_cat비원어민WP_Query(적어도 내가 찾을 수 있는 건) 그래서 이건 Woocommerce에 대한 커스텀이라고 생각해.이 문서에서는 카테고리 ID로 필터링하거나 이 필터링에 AND 조건을 사용할 수 있는 것을 찾을 수 없었습니다.

사용.cat, 의 배열tax_query,그리고.category__and아무 결과도 얻지 못했습니다.기본적으로 카테고리 ID 102와 115에 있는 모든 제품에 대해 문의하고 싶습니다.만약 slug를 사용해야 한다면, 제가 가지고 있는 아이디로 그 정보를 얻을 수 있는 방법이 있을 것입니다만, 2개의 쿼리를 피하고 여러 카테고리로 필터링하고 싶습니다.

이거 어떻게 하는지 아는 사람 있어?

업데이트: 카테고리 슬래그를 콤마로 구분하는 것을 배웠습니다.product_cat인수에는 "OR" 효과가 나타나기 때문에 두 제품 모두와 구별되는 제품이 결합됩니다. 하지만 이것은 제가 찾고 있는 것이 아닙니다.예를 들어 다음과 같습니다.

 'product_cat' => 'category-slug1, category-slug2'

두 카테고리의 제품을 모두 반품하지만, 두 카테고리 또는 여러 카테고리에만 속하는 개별 제품을 찾는 중입니다.

와우, 몇 시간 동안 머리를 부딪친 후에, 이렇게 해결할 수 있었어요

$args = array(
    'posts_per_page' => -1,
    'tax_query' => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'product_cat',
            'field' => 'slug',
            'terms' => 'category-slug1'
        ),
        array(
            'taxonomy' => 'product_cat',
            'field' => 'slug',
            'terms' => 'category-slug2'
        )
    ),
    'post_type' => 'product',
    'orderby' => 'title',
);
$the_query = new WP_Query( $args );

이 기능은tax_query인수(포함)relation => 'AND'제품이 두 가지 범주에 모두 속하는지 확인합니다.

이것이 미래에 누군가에게 도움이 되기를 바랍니다.

슬러그가 아닌 아이디를 패스하는 방법도 알 수 없었습니다(확실히 방법이 있을 것입니다만), 아이디를 바탕으로 슬러그를 회수하는 기능이 있습니다.

$terms = get_term($YOURID, 'product_cat'); 
$theslug = $terms->slug; 

WordPress codex on에서 범주 매개 변수에 대해 다음을 수행합니다.

OR에 상당하는

$args = array( 'product_cat' => 'category-slug1,category-slug2' );

AND에 상당하는

$args = array( 'product_cat' => 'category-slug1+category-slug2' );

예.

$query = new WP_Query( $args );

카테고리별로 쿼리하려면_아이디 이게 통했어.

// First obtain term id:
//...
$all_categories = get_categories( $args );
$cat_ids = array();

foreach ($all_categories as $cat) 
{
     array_push($cat_ids, $cat->term_id);
}

//Now use ids from array:
$args = array(
    'posts_per_page' => -1,
    'post_type' => 'product',
    'tax_query'     => array(
        array(
            'taxonomy'  => 'product_cat',
            'field'     => 'id', 
            'terms'     => $cat_ids
        )
    )
);

'tax_query' 배열 내에서 쿼리에 대해 수행할 'operator'를 지정할 수 있습니다.'AND' 연산자를 사용하여 원하는 작업을 수행할 수 있습니다.

$args = array(
'posts_per_page' => -1,
'tax_query' => array(
    'relation' => 'AND',
    array(
        'taxonomy' => 'product_cat',
        'field' => 'slug',
        'terms' => array( 'category-slug1', 'category-slug2' )
        'operator => 'AND',
    ),
),
'post_type' => 'product',
'orderby' => 'title',
);
$the_query = new WP_Query( $args );

이 쿼리에 의해 선택된 모든 제품은 제공된 '약관'과 일치합니다.상세한 것에 대하여는, 다음의 링크를 참조해 주세요.https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

링크가 끊어질 경우를 대비해 다음 정보를 제공합니다.

operator (string) - 테스트할 연산자.사용 가능한 값은 'IN', 'NOT IN', 'AND', 'EXISTS' 및 'NOT EXISTES'입니다. 기본값은 'IN'입니다.

언급URL : https://stackoverflow.com/questions/20411807/wp-query-woocommerce-products-that-belong-in-distinct-multiple-categories-only-t

반응형