在伍商务中获取并显示所选变体SKU

我有这个代码,适用于简单的产品类型,但不适用于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() );

}

如何使其同时适用于简单和可变产品?


精慕HU
浏览 172回答 3
3回答

斯蒂芬大帝

为了使它也适用于可变产品及其变体,它需要 Javascript (jQuery) 来获取可变产品的所选变体 SKU。请尝试以下适用于简单可变商品类型的操作,并显示可变商品的所选变体 SKU:add_shortcode( 'product_sku_div', 'wc_product_sku_div');function wc_product_sku_div() {&nbsp; &nbsp; global $product;&nbsp; &nbsp; if( ! is_a('WC_Product', $product) ) {&nbsp; &nbsp; &nbsp; &nbsp; $product = wc_get_product( get_the_id() );&nbsp; &nbsp; }&nbsp; &nbsp; ## 1 - For variable products (and their variations)&nbsp; &nbsp; if( $product->is_type('variable') ) {&nbsp; &nbsp; &nbsp; &nbsp; ob_start(); // Starting buffering&nbsp; &nbsp; &nbsp; &nbsp; ?>&nbsp; &nbsp; &nbsp; &nbsp; <div class="widget" sp-sku=""></div>&nbsp; &nbsp; &nbsp; &nbsp; <script type="text/javascript">&nbsp; &nbsp; &nbsp; &nbsp; jQuery( function($){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $('form.variations_form').on('show_variation', function( event, data ){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $( 'div.widget' ).attr( 'sp-sku', data.sku );&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // For testing&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log( 'Variation Id: ' + data.variation_id + ' | Sku: ' + data.sku );&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $('form.variations_form').on('hide_variation', function(){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $( 'div.widget' ).attr( 'sp-sku', '' );&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp; &nbsp; </script><?php&nbsp; &nbsp; &nbsp; &nbsp; return ob_get_clean(); // return the buffered content&nbsp; &nbsp; }&nbsp; &nbsp; ## 2 - For other products types&nbsp; &nbsp; else {&nbsp; &nbsp; &nbsp; &nbsp; return sprintf( '<div class="widget" sp-sku="%s"></div>', $product->get_sku() );&nbsp; &nbsp; }}代码进入函数.php活动子主题(或活动主题)的文件。经过测试并工作。

素胚勾勒不出你

您需要变体 ID 才能获取可变产品的 SKU。如果在以下函数中传递变体 ID,则可以获取其 SKU。$product&nbsp;=&nbsp;new&nbsp;WC_Product_Variation($variation_id); $product->get_sku();以下代码可用于获取产品的变体。然后,将结果转换为变体 ID,然后在上述代码中使用该变体 ID 来获取结果。$variations&nbsp;=&nbsp;$product->get_available_variations();

GCT1015

您需要使用 。get_available_variations();add_shortcode( 'product_sku_div', 'wc_product_sku_div');&nbsp;function wc_product_sku_div() {&nbsp;&nbsp; &nbsp; global $product;&nbsp; &nbsp; $variants_array = $product->get_available_variations();&nbsp; &nbsp; for ($i = 0; $i <&nbsp; count($variants_array); $i++ ) {&nbsp; &nbsp; &nbsp; &nbsp; return sprintf( '<div class="widget" sp-sku="%s"></div>', $variants_array[$i]['sku'] );&nbsp; &nbsp; }}参考:get_available_variations() ~ https://docs.woocommerce.com/wc-apidocs/class-WC_Product_Variable.html
打开App,查看更多内容
随时随地看视频慕课网APP