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

在单一和可变产品的“附加信息区域”显示 SKU

在单一和可变产品的“附加信息区域”显示 SKU

PHP
牛魔王的故事 2023-04-28 14:27:20
我试图在单个产品附加信息选项卡的表行中显示产品的 SKU。我尝试使用woocommerce_display_product_attributes过滤器并显示它(下面是我的代码示例),但它只适用于简单的产品。当使用具有不同 SKU 的可变产品时,选择(下拉选择)变体时该字段不会更新,只会显示空白。有没有正确的方法来做到这一点?这是我当前的代码:// Displays SKU/Part# to Single product Additional information table rowsadd_filter('woocommerce_display_product_attributes', 'wc_display_sku_additional_info_table', 10, 2);function wc_display_sku_additional_info_table( $product_attributes, $product ){    // Get product SKU    $get_sku = ( $sku = $product->get_sku() ) ? $sku : esc_html__( 'N/A', 'woocommerce' );    $product_attributes[] = [        'label' => __('SKU', 'woocommerce'),        'value' => $get_sku,    ];    return $product_attributes;}
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

这应该足够了,注释并添加到我的代码中

  • 对于 和single产品variable,SKU 表行添加到附加信息选项卡。

  • SKU 表格行会根据variable产品的下拉选择菜单进行相应更新

function display_product_attributes( $product_attributes, $product ) {

    // Simple product

    if ( $product->is_type('simple' ) ) {

        // Get product SKU

        $get_sku = ( $sku = $product->get_sku() ) ? $sku : esc_html__( 'N/A', 'woocommerce' );


        // Add

        $product_attributes[ 'sku-field sku-field-single' ] = array(

            'label' => __('SKU', 'woocommerce'),

            'value' => $get_sku,

        );


    } 

    // Variable product

    elseif ( $product->is_type('variable' ) ) {

        // Get childIDs in an array

        $children_ids = $product->get_children();


        // Loop

        foreach ( $children_ids as $child_id ) {

            // Get product

            $product = wc_get_product( $child_id ); 


            // Get product SKU

            $get_sku = ( $sku = $product->get_sku() ) ? $sku : esc_html__( 'N/A', 'woocommerce' );


            // Add

            $product_attributes[ 'sku-field sku-field-variable sku-field-variable-' . $child_id ] = array(

                'label' => __('SKU', 'woocommerce'),

                'value' => $get_sku,

            );

        }

        ?>

        <script>

        jQuery(document).ready(function($) {

            // Hide all rows

            $( '.sku-field-variable' ).css( 'display', 'none' );


            // Change

            $( 'input.variation_id' ).change( function() {

                // Hide all rows

                $( '.sku-field-variable' ).css( 'display', 'none' );


                if( $( 'input.variation_id' ).val() != '' ) {

                    var var_id = $( 'input.variation_id' ).val();


                    // Display current

                    $( '.sku-field-variable-' + var_id ).css( 'display', 'table-row' );

                }

            });    

        });

        </script>

        <?php

    }


    return $product_attributes;

}

add_filter('woocommerce_display_product_attributes', 'display_product_attributes', 10, 2);



查看完整回答
反对 回复 2023-04-28
  • 1 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信