正如我在评论中提到的,您可以通过woocommerce_get_product_attributes
过滤器控制任何给定产品的属性。通过此过滤器的$attributes
传递位于数组的关联数组中。使用属性的“slug”作为数组键。例如,avar_dump()
可能会揭示以下内容$attributes
。
array (size=1)
'pa_color' =>
array (size=6)
'name' => string 'pa_color' (length=8)
'value' => string '' (length=0)
'position' => string '0' (length=1)
'is_visible' => int 0
'is_variation' => int 1
'is_taxonomy' => int 1
如果属性是分类法,则 slug 将以“pa_”开头,我一直认为它代表产品属性。不是分类法的属性将只有它的名称用于 slug,例如:“大小”。
使用WooCommerce 条件标签,您可以专门针对商店页面上的属性。
这是两个示例过滤器,第一个用于排除特定属性:
// Exclude a certain product attribute on the shop page
function so_39753734_remove_attributes( $attributes ) {
if( is_shop() ){
if( isset( $attributes['pa_color'] ) ){
unset( $attributes['pa_color'] );
}
}
return $attributes;
}
add_filter( 'woocommerce_product_get_attributes', 'so_39753734_remove_attributes' );
后者用于根据您希望包含的属性构建自定义属性列表。
// Include only a certain product attribute on the shop page
function so_39753734_filter_attributes( $attributes ) {
if( is_shop() ){
$new_attributes = array();
if( isset( $attributes['pa_color'] ) ){
$new_attributes['pa_color'] = $attributes['pa_color'] ;
}
$attributes = $new_attributes;
}
return $attributes;
}
add_filter( 'woocommerce_product_get_attributes', 'so_39753734_filter_attributes' );
已于2018 年 3 月 29 日更新woocommerce_product_get_attributes
,因为woocommerce_get_product_attributes
已弃用。