如何在 Woocommerce 中获取变体运输 class
How to get the variation shipping class in Woocommerce
我想显示为每个变体设置的变量产品运输 class。
我意识到我可能需要混合使用 php 和 Javascript,但我想先把 PHP 放在一边。
我猜最好的开始方式是使用:
if( $product->is_type( 'simple' ) ) {
$product = wc_get_product();
$shipping_class = $product->get_shipping_class();
} elseif( $product->is_type( 'variable' ) ) {
$product = wc_get_product();
$shipping_class = $product->get_shipping_class();
}
但我不确定如何运送产品变体 class 或者我这样做是否正确。查看 wc_get_product_variation
或变体以查看是否有答案。
任何帮助将不胜感激,可能会将所有内容显示为数组并使用 javascript 隐藏所选内容。
如何获得变体发货 class?
要获取已定义可变产品 ID 的 classes 变体,有两种方法:
1) 对 product_shipping_class
分类法使用 wp_get_post_terms()
函数:
// Get the WC_Product_Variable instance Object (if needed)
$product = wc_get_product( $product_id );
// Initializing
$shipping_classes = array();
// Loop through the visible variations IDs
foreach ( $product->get_visible_children() as $variation_id ) {
// Get the variation shipping class WP_Term object
$term = wp_get_post_terms( $variation_id, 'product_shipping_class' );
if( empty($term) ) {
// Get the parent product shipping class WP_Term object
$term = wp_get_post_terms( $product->get_id(), 'product_shipping_class' );
// Set the shipping class slug in an indexed array
$shipping_classes[$variation_id] = $term->slug;
}
}
// Raw output (for testing)
var_dump($shipping_classes);
这将为您提供一组变体 ID/运输 class 对。
2) 使用get_shipping_class_id()
WC_Product
方法:
// Get the WC_Product_Variable instance Object (if needed)
$product = wc_get_product( $product_id );
// Initializing
$shipping_classes = array();
// Loop through the visible variations IDs
foreach ( $product->get_visible_children() as $variation_id ) {
// Get the Product Variation instance Object
$variation = wc_get_product($variation_id);
// Get the shipping class ID
$term_id = $variation->get_shipping_class_id();
// The shipping class WP_Term Object
$term = get_term_by('term_id', $term_id, 'product_shipping_class');
// Set the shipping class slug in an indexed array
$shipping_classes[$variation_id] = $term->slug;
}
// Raw output (for testing)
var_dump($shipping_classes);
我想显示为每个变体设置的变量产品运输 class。 我意识到我可能需要混合使用 php 和 Javascript,但我想先把 PHP 放在一边。
我猜最好的开始方式是使用:
if( $product->is_type( 'simple' ) ) {
$product = wc_get_product();
$shipping_class = $product->get_shipping_class();
} elseif( $product->is_type( 'variable' ) ) {
$product = wc_get_product();
$shipping_class = $product->get_shipping_class();
}
但我不确定如何运送产品变体 class 或者我这样做是否正确。查看 wc_get_product_variation
或变体以查看是否有答案。
任何帮助将不胜感激,可能会将所有内容显示为数组并使用 javascript 隐藏所选内容。
如何获得变体发货 class?
要获取已定义可变产品 ID 的 classes 变体,有两种方法:
1) 对 product_shipping_class
分类法使用 wp_get_post_terms()
函数:
// Get the WC_Product_Variable instance Object (if needed)
$product = wc_get_product( $product_id );
// Initializing
$shipping_classes = array();
// Loop through the visible variations IDs
foreach ( $product->get_visible_children() as $variation_id ) {
// Get the variation shipping class WP_Term object
$term = wp_get_post_terms( $variation_id, 'product_shipping_class' );
if( empty($term) ) {
// Get the parent product shipping class WP_Term object
$term = wp_get_post_terms( $product->get_id(), 'product_shipping_class' );
// Set the shipping class slug in an indexed array
$shipping_classes[$variation_id] = $term->slug;
}
}
// Raw output (for testing)
var_dump($shipping_classes);
这将为您提供一组变体 ID/运输 class 对。
2) 使用get_shipping_class_id()
WC_Product
方法:
// Get the WC_Product_Variable instance Object (if needed)
$product = wc_get_product( $product_id );
// Initializing
$shipping_classes = array();
// Loop through the visible variations IDs
foreach ( $product->get_visible_children() as $variation_id ) {
// Get the Product Variation instance Object
$variation = wc_get_product($variation_id);
// Get the shipping class ID
$term_id = $variation->get_shipping_class_id();
// The shipping class WP_Term Object
$term = get_term_by('term_id', $term_id, 'product_shipping_class');
// Set the shipping class slug in an indexed array
$shipping_classes[$variation_id] = $term->slug;
}
// Raw output (for testing)
var_dump($shipping_classes);