Php 通过属性查询获取产品
我有一个属性颜色的产品。属性值为红色、蓝色和绿色。我正在尝试创建一个自定义搜索,但我无法获取查询以提取任何产品Php 通过属性查询获取产品,php,wordpress,woocommerce,attributes,product,Php,Wordpress,Woocommerce,Attributes,Product,我有一个属性颜色的产品。属性值为红色、蓝色和绿色。我正在尝试创建一个自定义搜索,但我无法获取查询以提取任何产品 $args = array( 'post_type' => array('product'), 'post_status' => 'publish', 'posts_per_page' => -1, 'meta_query' => array( array( 'k
$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 );
我哪里出错了?产品属性颜色的正确分类法是
'pa\u 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);
此代码经过测试并正常工作。您将获得所有颜色属性值(术语)“蓝色”、“红色”和“绿色”的产品
自WooCommerce 3以来,产品可见性由自定义分类法产品可见性
处理。您可以看到以下相关线程:
不幸的是,这对我不起作用,我不明白为什么。@user3098629我在测试服务器上测试了它,对我来说,它工作得很好。无论如何,属性“Color”的正确分类法是
pa\u Color
。所有的产品属性分类代码都是从pa\uu
开始的……实际产品中是否有任何东西需要设置才能工作?我有一个产品,它是可见的,除了这个查询,它显示在其他任何地方。我让它工作了…显然,元查询造成了问题,导致它什么也不返回。感谢您的帮助,因为您不再使用meta\u query
排除隐藏的产品,您需要使用tax\u query
此处详述