Raf*_*fyM 3 php wordpress jquery woocommerce hook-woocommerce
我正在尝试在单个产品“附加信息”选项卡的表行中显示产品的 SKU。
我尝试使用woocommerce_display_product_attributes过滤器并显示它(下面是我的代码示例),但它仅适用于简单的产品。
当使用具有不同 SKU 的可变产品时,选择(下拉选择)变体时,该字段不会更新,并且仅显示空白。有没有正确的方法来做到这一点?
这是我当前的代码:
// 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;
}
Run Code Online (Sandbox Code Playgroud)
这应该足够了,注释和解释添加到我的代码中
single产品variable,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);
Run Code Online (Sandbox Code Playgroud)