获取 Woocommerce 变体属性
Get Woocommerce variation attributes
我正在尝试在自定义产品页面上获取可变产品的变体。我有两个属性,一个用于 select 大小,另一个用于颜色样本。我无法显示我需要显示的属性的问题,当我使用以下代码时,它 returns 尺寸或颜色的文本名称而不是尺寸或颜色样本的 select 下拉列表。有什么帮助吗?!
echo implode(', ', wc_get_product_terms( $product_id, 'pa_colors' ));
这是一个简短的代码来解决你的问题,我给你完整的代码,你可以只使用你需要的。
首先是检查 get_product
函数是否存在,并检查产品类型,以使用 ID 创建正确的产品对象(在我的例子中是 $idProduct
)。
它适用于 woocommerce 3.x,我没有在 woocommerce < 3.x.
上测试它
if( function_exists('get_product') ) {
$product = get_product( $idProduct );
if ( $product->is_type( 'variable' ) ) {
$product = new WC_Product_Variable( $idProduct );
$available_variations = $product->get_available_variations(); //get all child variations
$variation_variations = $product- >get_variation_attributes(); // get all attributes by variations
// taxonomy => terms
// pa_attribute-color => array('blue', 'red', green)
// Use ex: get_taxonomy('pa_attribute-color')->labels; to get the Name and not the slug to attributes, it can be the taxonomy
// Use ex: get_term_by('name', 'pa_attribute-color', 'pa_attribute-color); to get the Name/label
$result = array( $available_variations , $attributes); // only to see the result you can use var_dump, error_log, etc.
//...
//...
}elseif ( $product->is_type( 'bundle' ) && class_exists( 'WC_Product_Bundle' ) ) {
$product = new WC_Product_Bundle( $idProduct );
}else{
$product = new WC_Product( $idProduct );
}
}
你也试试:
$product->get_attribute( $key );
wc_attribute_label($key);
其中 $key
可以是 pa_color , pa_size 等
希望对你有帮助
我正在尝试在自定义产品页面上获取可变产品的变体。我有两个属性,一个用于 select 大小,另一个用于颜色样本。我无法显示我需要显示的属性的问题,当我使用以下代码时,它 returns 尺寸或颜色的文本名称而不是尺寸或颜色样本的 select 下拉列表。有什么帮助吗?!
echo implode(', ', wc_get_product_terms( $product_id, 'pa_colors' ));
这是一个简短的代码来解决你的问题,我给你完整的代码,你可以只使用你需要的。
首先是检查 get_product
函数是否存在,并检查产品类型,以使用 ID 创建正确的产品对象(在我的例子中是 $idProduct
)。
它适用于 woocommerce 3.x,我没有在 woocommerce < 3.x.
上测试它if( function_exists('get_product') ) {
$product = get_product( $idProduct );
if ( $product->is_type( 'variable' ) ) {
$product = new WC_Product_Variable( $idProduct );
$available_variations = $product->get_available_variations(); //get all child variations
$variation_variations = $product- >get_variation_attributes(); // get all attributes by variations
// taxonomy => terms
// pa_attribute-color => array('blue', 'red', green)
// Use ex: get_taxonomy('pa_attribute-color')->labels; to get the Name and not the slug to attributes, it can be the taxonomy
// Use ex: get_term_by('name', 'pa_attribute-color', 'pa_attribute-color); to get the Name/label
$result = array( $available_variations , $attributes); // only to see the result you can use var_dump, error_log, etc.
//...
//...
}elseif ( $product->is_type( 'bundle' ) && class_exists( 'WC_Product_Bundle' ) ) {
$product = new WC_Product_Bundle( $idProduct );
}else{
$product = new WC_Product( $idProduct );
}
}
你也试试:
$product->get_attribute( $key );
wc_attribute_label($key);
其中 $key
可以是 pa_color , pa_size 等
希望对你有帮助