为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
精慕HU 2022-09-25 19:05:53
我有这个代码,适用于简单的产品类型,但不适用于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() );}如何使其同时适用于简单和可变产品?
查看完整描述

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活动子主题(或活动主题)的文件。经过测试并工作。


查看完整回答
反对 回复 2022-09-25
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

您需要变体 ID 才能获取可变产品的 SKU。

如果在以下函数中传递变体 ID,则可以获取其 SKU。

$product = new WC_Product_Variation($variation_id);
$product->get_sku();

以下代码可用于获取产品的变体。然后,将结果转换为变体 ID,然后在上述代码中使用该变体 ID 来获取结果。

$variations = $product->get_available_variations();


查看完整回答
反对 回复 2022-09-25
?
GCT1015

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



查看完整回答
反对 回复 2022-09-25
  • 3 回答
  • 0 关注
  • 171 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号