Обновите все изменения цены на переменный продукт в Woocommerce

Мне нужно получить все варианты id и цену обновления в цикле. Простой запрос и цикл выглядят так:

$params = array( 'posts_per_page' => -1, 'post_type' => 'product_variation', 'post_parent' => $product->get_id() // tried $post-ID ); $variations = get_posts( $params ); foreach ( $variations as $variation ) { $variation_ID = $variation->ID; // tried $post-ID, $product->get_id() $regular_price=34; update_post_meta( $variation_ID, '_regular_price', (float)$regular_price ); update_post_meta( $variation_ID, '_price', (float)$regular_price ); } 

Я думаю, что не работает это:

 ('post_parent' => $product->get_id()) 

или это:

 ($variation_ID = $variation->ID;). 

Сначала в вашем коде ' или ' должно быть заменено на ' . Также, если используется $post-ID следует заменить $post->ID

В зависимости от того, где и как вы используете этот код, вы должны попытаться включить global $post; сначала, чтобы иметь возможность использовать объект WP_Post $post .

Затем вы можете попробовать использовать эту настроенную версию своего кода:

 global $post; $regular_price = 13; // Only for product post type if( $post->post_type == 'product' ) $product = wc_get_product( $post->ID ); // An instance of the WC_Product object // Only for variable products if( $product->is_type('variable') ){ foreach( $product->get_available_variations() as $variation_values ){ $variation_id = $variation_values['variation_id']; // variation id // Updating active price and regular price update_post_meta( $variation_id, '_regular_price', $regular_price ); update_post_meta( $variation_id, '_price', $regular_price ); wc_delete_product_transients( $variation_id ); // Clear/refresh the variation cache } // Clear/refresh the variable product cache wc_delete_product_transients( $post->ID ); } 

Этот код тестируется на WooCommerce версии 3+ и работает