3 回答
TA贡献1827条经验 获得超8个赞
为了使它也适用于可变产品及其变体,它需要 Javascript (jQuery) 来获取可变产品的所选变体 SKU。
请尝试以下适用于简单可变商品类型的操作,并显示可变商品的所选变体 SKU:
add_shortcode( 'product_sku_div', 'wc_product_sku_div');
function wc_product_sku_div() {
global $product;
if( ! is_a('WC_Product', $product) ) {
$product = wc_get_product( get_the_id() );
}
## 1 - For variable products (and their variations)
if( $product->is_type('variable') ) {
ob_start(); // Starting buffering
?>
<div class="widget" sp-sku=""></div>
<script type="text/javascript">
jQuery( function($){
$('form.variations_form').on('show_variation', function( event, data ){
$( 'div.widget' ).attr( 'sp-sku', data.sku );
// For testing
console.log( 'Variation Id: ' + data.variation_id + ' | Sku: ' + data.sku );
});
$('form.variations_form').on('hide_variation', function(){
$( 'div.widget' ).attr( 'sp-sku', '' );
});
});
</script><?php
return ob_get_clean(); // return the buffered content
}
## 2 - For other products types
else {
return sprintf( '<div class="widget" sp-sku="%s"></div>', $product->get_sku() );
}
}
代码进入函数.php活动子主题(或活动主题)的文件。经过测试并工作。
TA贡献1827条经验 获得超9个赞
您需要变体 ID 才能获取可变产品的 SKU。
如果在以下函数中传递变体 ID,则可以获取其 SKU。
$product = new WC_Product_Variation($variation_id); $product->get_sku();
以下代码可用于获取产品的变体。然后,将结果转换为变体 ID,然后在上述代码中使用该变体 ID 来获取结果。
$variations = $product->get_available_variations();
TA贡献1827条经验 获得超4个赞
您需要使用 。get_available_variations();
add_shortcode( 'product_sku_div', 'wc_product_sku_div');
function wc_product_sku_div() {
global $product;
$variants_array = $product->get_available_variations();
for ($i = 0; $i < count($variants_array); $i++ ) {
return sprintf( '<div class="widget" sp-sku="%s"></div>', $variants_array[$i]['sku'] );
}
}
参考:
get_available_variations() ~ https://docs.woocommerce.com/wc-apidocs/class-WC_Product_Variable.html
- 3 回答
- 0 关注
- 171 浏览
添加回答
举报
