我的代码适用于简单的产品类型,但不适用于 WooCommerce 中的可变产品:
add_shortcode( 'product_sku_div', 'wc_product_sku_div');
function wc_product_sku_div() {
global $product;
return sprintf( '<div class="widget" sp-sku="%s"></div>', $product->get_sku() );
}
如何使其适用于简单产品和可变产品?
为了使其也适用于可变产品及其变体,它需要 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() );
}
}
代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)