如何在商品_SKU中写标题+变体(仅对于简单商品标题)?这是通过WP All Import更新商店中现有产品(超过8000种)并添加新产品所必需的。现在仅更新简单的产品。 我正在尝试,但仍然无法正常工作...
function wpse_177056_init_shortcode() {
$args = array(
'post_type' => 'product'
);
$products = new WP_Query( $args );
if ( $products->have_posts() ):
while ( $products->have_posts() ):
$products->the_post();
update_post_meta( $post->ID, '_sku', 'test' );
endwhile;
endif;
}
add_action( 'init', 'wpse_177056_init_shortcode' );
答案 0 :(得分:0)
如果您有很多产品,请设置更多时间限制...
add_filter( 'init', 'sku_from_title_and_variation', 10, 1);
function sku_from_title_and_variation(){
set_time_limit(300);
$query = array(
'numberposts' => -1,
'post_status' => 'published',
);
$products = wc_get_products( $query );
foreach ($products as $product) {
if( $product->is_type('variable') ){
$product_id = $product->get_id();
$product_title = $product->get_title();
update_post_meta( $product_id, '_sku', $product_title );
wc_delete_product_transients( $product_id );
foreach( $product->get_available_variations() as $variation_values ){
$variation_id = $variation_values['variation_id']; // variation id
$variation_attr = $variation_values['attributes'];
$variation_attr = $variation_attr['attribute_pa_variant'];
$variation_attr = get_term_by('slug', $variation_attr , 'pa_variant')->name;
update_post_meta( $variation_id, '_sku', $product_title.$variation_attr );
wc_delete_product_transients( $variation_id );
}
wc_delete_product_transients( $product->get_id() );
} else {
update_post_meta( $product->get_id(), '_sku', $product->get_title());
wc_delete_product_transients( $product->get_id() );
}
}
}
答案 1 :(得分:0)
您可以使用set_sku函数更新SKU的
foreach( $products as $product){
// Set Product name as SKU
$variable = esc_html( strtolower ( $product->name ) );
$product->set_sku( $variable );
}