gpt4 book ai didi

php - Woocommerce `update_post_meta` 未更新数据库值

转载 作者:可可西里 更新时间:2023-10-31 23:40:27 25 4
gpt4 key购买 nike

我创建了一个使用 update_post_meta 函数来更新产品价格变化的插件。

如果我有一个产品 x (id:5) 和一个变体 y (id:400 ) 然后我运行 update_post_meta(400,"_regular_price",13.00); 它没有更新数据库。这非常奇怪,因为当我点击 Edit Product (wp-admin) 时,更新的价格 13.00 出现在变体面板中,我必须点击 Update 更新以供客户查看。这是常规行为吗?如果是,如何在 update_post_meta 函数执行后立即更新数据库?

(图片)update_post_meta() 后的价格 摘要页面

.

(图片)相同更新后的价格。编辑产品页面

这是我进行批量更新的代码

// $attribute_value/$variation_value are set correctly!
while ($loop->have_posts() ) : $loop->the_post();
global $product;
$variations = new WC_Product_Variable($product->post->ID);
$variations = $variations->get_available_variations();
foreach ($variations as $key => $variation){
foreach ($variation["attributes"] as $key => $attribute_value):
if($attribute_value == $variation_value):
update_post_meta( $variation['variation_id'], '_regular_price', $regular_price);
endif;
endforeach;
}
endwhile;

我问过同样的问题,但在 Wordpress 论坛上没有回复 http://wordpress.org/support/topic/update_post_meta-is-not-updating-the-actual-values?replies=1#post-5742842

最佳答案

在 woocommerce(版本 2.1.12)中:

woocommerce/includes/wc-product-functions.php:417

$regular_price = get_post_meta( $product_id, '_regular_price', true );

update_post_meta( $product_id, '_price', $regular_price );
update_post_meta( $product_id, '_sale_price', '' );
update_post_meta( $product_id, '_sale_price_dates_from', '' );
update_post_meta( $product_id, '_sale_price_dates_to', '' );

wc_delete_product_transients( $product_id );

看来您必须更新“_price”元数据,甚至删除 transient 以更新产品价格。

要删除产品 transient 调用:

wc_delete_product_transients( $product_id );

关于php - Woocommerce `update_post_meta` 未更新数据库值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24509442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com