在单一和可变产品的“附加信息区域”上显示 SKU
Posted
技术标签:
【中文标题】在单一和可变产品的“附加信息区域”上显示 SKU【英文标题】:Display SKU on the 'additional information area' for single and variable products 【发布时间】:2020-09-21 22:23:21 【问题描述】:我正在尝试在单个产品附加信息选项卡的表格行中显示产品的 SKU。
我尝试使用 woocommerce_display_product_attributes
过滤器并显示它(下面是我的代码示例),但它仅适用于 简单产品。
When using variable products with different SKU, the field are not updated when (dropdown select) variation is selected and only show blank.有没有合适的方法来做到这一点?
这是我当前的代码:
// Displays SKU/Part# to Single product Additional information table rows
add_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】:这应该足够了,在我的代码中添加解释的评论
对于single
和variable
产品,在附加信息选项卡中添加了一个 SKU 表行。
使用variable
产品的下拉选择菜单相应地更新 SKU 表行
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);
【讨论】:
以上是关于在单一和可变产品的“附加信息区域”上显示 SKU的主要内容,如果未能解决你的问题,请参考以下文章
Magento:在发票上包含可配置的产品 Sku - 目前仅显示相关的简单产品
WooCommerce:在任何地方添加/显示产品或变体自定义字段
如何在opencart的同一页面上两次使用相同脚本中的脚本?