这个让我疯狂..我正在尝试根据特定属性查询和输出WooCommerce产品。例如,我设置了一个名为on
的属性,其值可能为yes
或no
。
我使用以下内容进行查询:
$args = array(
'post_type' => 'product',
'meta_key' => 'pa_on',
'meta_value' => 'yes',
'posts_per_page' => -1
);
query_posts($args);
meta_key
或许至关重要;如果我称之为on
我什么也得不到。如果我称之为pa_on
(因为这就是我理解WooCommerce定制属性的构建方式),我什么也得不到。
但是,如果我尝试使用其他查询并使用_featured
这是一个标准的WooCommerce自定义元素,它会返回相关的精选帖子。帮忙,有人吗?
答案 0 :(得分:6)
我知道这是一个旧的,但万一有人偶然发现它像我今天所做的那样 - Woocommerce(我使用的是v2.6.2)似乎将这些自定义属性存储为分类法。
我怀疑原始问题的正确args看起来像这样:
$args = array(
'post_type' => 'product',
'tax_query' => array(
array(
'taxonomy' => 'pa_on',
'field' => 'name',
'terms' => 'yes'
)
)
);
使用适当的值进行安装,解决了我的问题。
答案 1 :(得分:3)
对于新的woocommerce使用:
$attribute = 'on';
$value = 'yes';
$args = array(
'post_type' => 'product',
'tax_query' => array(
array(
'taxonomy' => 'pa_' . $attribute,
'terms' => $value,
'field' => 'slug',
'operator' => 'IN'
)
)
);
答案 2 :(得分:1)
如果将产品属性另存为特定产品属性(即非全局),则无法将其作为分类进行查询,而是可以使用此代码段(从http://snippet.fm/snippets/query-woocommerce-products-product-specific-custom-attribute/复制):
// Set custom attribute name and value to search for
$attribute_name = 'color';
$attribute_value = 'green';
$serialized_value = serialize( 'name' ) . serialize( $attribute_name ) . serialize( 'value' ) . serialize( $attribute_value ); // extended version: $serialized_value = serialize( $attribute_name ) . 'a:6:{' . serialize( 'name' ) . serialize( $attribute_name ) . serialize( 'value' ) . serialize( $attribute_value ) . serialize( 'position' );
$args = array(
'post_type' => 'product',
'post_status' => 'any',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => '_product_attributes',
'value' => $serialized_value,
'compare' => 'LIKE',
),
),
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) {
$loop->the_post();
// do stuff here... e.g. get_the_ID()
}
wp_reset_postdata();
答案 3 :(得分:0)
猜猜你需要的是一个带有meta_query值集的查询:
$args = array(
'post_type' => 'product',
'meta_query' => array(
array(
'key' => 'pa_on',
'value' => 'yes',
'compare' => '='
)
)
);
$query = new WP_Query( $args );
您可以在此处详细了解相关内容: http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters