問題描述
我正在嘗試在單個產品附加信息選項卡的表格行中顯示產品的 SKU.
I'm trying to display the product's SKU inside the table row of single products Additional Information tab.
我嘗試使用 woocommerce_display_product_attributes
過濾器并顯示它(下面是我的代碼示例),但它僅適用于簡單產品.
I tried using the woocommerce_display_product_attributes
filter and have it displayed (sample of my code below) but it only works with simple product.
When using variable products with different SKU, the field are not updated when (dropdown select) variation is selected and only show blank.有沒有合適的方法來做到這一點?
When using variable products with different SKU, the field are not updated when (dropdown select) variation is selected and only show blank. Is there a proper way to do this?
這是我當前的代碼:
// 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;
}
推薦答案
這應該足夠了,注釋和解釋添加到我的代碼中
This should suffice, comment with explanation added to my code
- 對于
single
和variable
產品,SKU 表行會添加到附加信息選項卡中. - SKU 表行根據
variable
產品的下拉選擇菜單進行相應更新
- For both
single
andvariable
products, a SKU table row is added to the additional information tab. - SKU table row is updated accordingly with the dropdown select menu for
variable
products
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的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!