更新 Woocommerce 中可变产品的所有变体价格
Update all variations prices of a variable product in 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;).
First in your code ‘
or ’
should be replaced by '
.
Also if used $post-ID
should be replaced by $post->ID
根据您使用此代码的 where 和 how ,您应该首先尝试包含 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+ 上测试并有效
我需要循环获取所有变体 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;).
First in your code
‘
or’
should be replaced by'
. Also if used$post-ID
should be replaced by$post->ID
根据您使用此代码的 where 和 how ,您应该首先尝试包含 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+ 上测试并有效