从 Woocommerce 父变量 SKU 生成产品变体 SKU
Generate the product variations SKUs from Woocommerce parent variable SKU
在 Woocommerce 中,我想从父变量产品 SKU 生成产品变体 SKU,例如:
- 可变产品 sku:1200
- 第一个产品变体 SKU:1200-01
- 第二个产品变体 SKU:1200-02
- 第三个产品变体 SKU:1200-03
- ……等等……
所以我需要订单中的 SKU(并在选择变体时显示在产品页面中),例如:1200-01
我不知道如何在 woocommerce 中实现这一点。我之前使用过其他商店系统,这是获得变化的非常基本的设置 运行.
非常感谢您的帮助。
您可以使用多种方式从父变量产品生成产品变体的组合 SKU。这是其中两个:
第一种方式:
当产品使用 WC_Product 方法 get_sku()
时,以下代码只会为前端显示(“视图”)生成组合 sku(但不会生成和像其他方式一样从可变产品中保存组合变体 SKU):
add_filter( 'woocommerce_product_variation_get_sku', 'custom_variation_sku', 10, 3 );
function custom_variation_sku( $sku, $product ) {
if( $main_sku = get_post_meta( $product->get_parent_id(), '_sku', true ) ){
$sku = $main_sku . '-' . sprintf( '%02d', ( get_post($product->get_id())->menu_order ) );
}
return $sku;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
第二种方式:
以下将从可变产品 SKU 自动生成产品变体 SKU。
第一个函数将在“高级” 选项卡中的可变产品设置中添加一个复选框。 只有当您选中此复选框时,第二个函数才会从可变产品 SKU 生成所有产品变体 SKU。
// Custom checkbox for auto generation of the variations SKUs
add_action('woocommerce_product_options_advanced', 'additional_product_options_advanced_custom_checkbox');
function additional_product_options_advanced_custom_checkbox()
{
global $post;
echo '<div class="options_group show_if_variable hidden">';
// Custom checkbox located on Advanced tab settings
woocommerce_wp_checkbox( array(
'id' => 'generate_variations_skus',
'label' => __('Generate variations SKUs', 'woocommerce'),
'description' => __('Auto Generation of the variations SKUs from variable sku', 'woocommerce'),
'desc_tip' => 'true'
));
echo '</div>';
}
// Auto generate the variations SKUs
add_action( 'woocommerce_admin_process_product_object', 'wc_auto_generate_variations_skus', 10, 1 );
function wc_auto_generate_variations_skus( $product ) {
if( $product->is_type('variable') && isset($_POST['generate_variations_skus']) ) {
$parent_sku = $product->get_sku();
$children_ids = $product->get_children();
$count = 0;
// Loop through the variations Ids
foreach( $children_ids as $child_id ){
$count++;
// Get an instance of the WC_Product_Variation object
$variation = wc_get_product($child_id);
// Set the prefix length based on variations count
$prefix = sizeof($children_ids) < 100 ? sprintf('%02d', $count) : sprintf('%03d', $count);
// Generate and set the sku
$variation->set_sku( $parent_sku . '-' . $prefix );
// Save variation
$variation->save();
}
}
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
a) 在可变产品的“高级”选项卡设置中:选中复选框
b) 更新变量产品:
c) 现在已经生成所有变体的 SKU 编号 (保留订单):
在 Woocommerce 中,我想从父变量产品 SKU 生成产品变体 SKU,例如:
- 可变产品 sku:1200
- 第一个产品变体 SKU:1200-01
- 第二个产品变体 SKU:1200-02
- 第三个产品变体 SKU:1200-03
- ……等等……
所以我需要订单中的 SKU(并在选择变体时显示在产品页面中),例如:1200-01
我不知道如何在 woocommerce 中实现这一点。我之前使用过其他商店系统,这是获得变化的非常基本的设置 运行.
非常感谢您的帮助。
您可以使用多种方式从父变量产品生成产品变体的组合 SKU。这是其中两个:
第一种方式:
当产品使用 WC_Product 方法 get_sku()
时,以下代码只会为前端显示(“视图”)生成组合 sku(但不会生成和像其他方式一样从可变产品中保存组合变体 SKU):
add_filter( 'woocommerce_product_variation_get_sku', 'custom_variation_sku', 10, 3 );
function custom_variation_sku( $sku, $product ) {
if( $main_sku = get_post_meta( $product->get_parent_id(), '_sku', true ) ){
$sku = $main_sku . '-' . sprintf( '%02d', ( get_post($product->get_id())->menu_order ) );
}
return $sku;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
第二种方式:
以下将从可变产品 SKU 自动生成产品变体 SKU。
第一个函数将在“高级” 选项卡中的可变产品设置中添加一个复选框。 只有当您选中此复选框时,第二个函数才会从可变产品 SKU 生成所有产品变体 SKU。
// Custom checkbox for auto generation of the variations SKUs
add_action('woocommerce_product_options_advanced', 'additional_product_options_advanced_custom_checkbox');
function additional_product_options_advanced_custom_checkbox()
{
global $post;
echo '<div class="options_group show_if_variable hidden">';
// Custom checkbox located on Advanced tab settings
woocommerce_wp_checkbox( array(
'id' => 'generate_variations_skus',
'label' => __('Generate variations SKUs', 'woocommerce'),
'description' => __('Auto Generation of the variations SKUs from variable sku', 'woocommerce'),
'desc_tip' => 'true'
));
echo '</div>';
}
// Auto generate the variations SKUs
add_action( 'woocommerce_admin_process_product_object', 'wc_auto_generate_variations_skus', 10, 1 );
function wc_auto_generate_variations_skus( $product ) {
if( $product->is_type('variable') && isset($_POST['generate_variations_skus']) ) {
$parent_sku = $product->get_sku();
$children_ids = $product->get_children();
$count = 0;
// Loop through the variations Ids
foreach( $children_ids as $child_id ){
$count++;
// Get an instance of the WC_Product_Variation object
$variation = wc_get_product($child_id);
// Set the prefix length based on variations count
$prefix = sizeof($children_ids) < 100 ? sprintf('%02d', $count) : sprintf('%03d', $count);
// Generate and set the sku
$variation->set_sku( $parent_sku . '-' . $prefix );
// Save variation
$variation->save();
}
}
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
a) 在可变产品的“高级”选项卡设置中:选中复选框
b) 更新变量产品:
c) 现在已经生成所有变体的 SKU 编号 (保留订单):