Используя хук woocommerce следующим образом:
Я ожидаю, что с запросом $ queryLast получит последний номер продукта,
НО
get_the_ID () всегда возвращает дублированные элементыдаже с:
wp_reset_postdata();
wp_reset_query();
clean_post_cache(get_the_ID());
Мне нужно получить идентификатор элемента, запрошенный в queryLast.
Для иллюстрации, скажем, мой самый высокий SKU - 1600, я дублирую SKU 300. Ожидаемое поведение - назначитьновый SKU 1601 для нового продукта (дублирование SKU 300)
Теперь он назначает новый SKU 301 ... и т. д.
add_action( 'woocommerce_product_duplicate', 'duplicate_sku_func', 10, 2 );
function duplicate_sku_func( $duplicate ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
$product_id = $duplicate->save();
wp_reset_postdata();
wp_reset_query();
clean_post_cache(get_the_ID());
$args = array(
'order' => 'DESC',
'orderby' => 'id' ,
'post_type'=> 'product',
'posts_per_page' => 1 ,
);
$queryLast = new WP_Query($args);
while ( $queryLast->have_posts() ) : $queryLast->the_post();
$sku2 = get_post_meta( get_the_ID(), '_sku', true );
//$your_sku = get_the_ID();
$your_sku = (int) $sku2+1;
endwhile;
update_post_meta($product_id, '_sku', $your_sku );
update_post_meta($product_id, '_manage_stock', 'yes');
update_post_meta($product_id, '_stock', '1');
}