web-dev-qa-db-ja.com

WooCommerceは属性クエリによって製品を取得します

属性色の商品を持っています。属性値は、赤、青、緑です。カスタム検索を作成しようとしていますが、クエリで製品を取得できません。

$args =  array(
    'post_type'      => array('product'),
    'post_status'    => 'publish',
    'posts_per_page' => -1,
    'meta_query'     => array( 
        array(
            'key' => '_visibility',
            'value' => array('catalog', 'visible'),
            'compare' => 'IN',  
        ) 
    ),
    'tax_query'      => array( 
        array(
            'taxonomy'        => 'product',
            'field'           => 'slug',
            'terms'           =>  array('blue', 'red', 'green'),
            'operator'        => 'IN',
        ),
    )
);

$products = new WP_Query( $args );

どこで私は間違えましたか?

8
user3098629

商品属性の色の正しい分類法は'pa_color'なので、正しいクエリは次のとおりです。

// The query
$products = new WP_Query( array(
   'post_type'      => array('product'),
   'post_status'    => 'publish',
   'posts_per_page' => -1,
   'meta_query'     => array( array(
        'key' => '_visibility',
        'value' => array('catalog', 'visible'),
        'compare' => 'IN',
    ) ),
   'tax_query'      => array( array(
        'taxonomy'        => 'pa_color',
        'field'           => 'slug',
        'terms'           =>  array('blue', 'red', 'green'),
        'operator'        => 'IN',
    ) )
) );

// The Loop
if ( $products->have_posts() ): while ( $products->have_posts() ):
    $products->the_post();
    $product_ids[] = $products->post->ID;
endwhile;
    wp_reset_postdata();
endif;

// TEST: Output the Products IDs
print_r($product_ids);

このコードはテストされ、機能します。 「青」、「赤」、「緑」という値(用語)を持つColor属性を持つすべての製品を取得します…

WooCommerce 3以降、製品の可視性はカスタム分類法product_visibilityによって処理されます。次の関連スレッドを確認できます。

10
LoicTheAztec