更新 Woocommerce 可变产品的所有产品变体销售价格

问题描述 投票:0回答:2

我有大约 10 种产品,每种产品有近 200 种变化。我需要更新特定产品的销售价格,包括其所有变体。

问题是:

所有变体都有不同的价格。 尚未输入销售价格 - 所有销售价格输入框均为空。

我需要一个 SQL 解决方案来运行和更新特定产品的所有销售价格,方法是采用常规价格并从中扣除 350,或者

现阶段我不知道的任何其他方式,因为我已经尝试了许多解决方案,包括 Woocommerce 内置解决方案“设置销售价格”,这又不起作用,因为价格不一样。

SELECT * FROM `wp_postmeta` WHERE post_id = "1097"
UPDATE `meta_id` = (SELECT * FROM `wp_postmeta` WHERE `meta_value` = _regular_price) - 350 WHERE `meta_key` = _sale_price

Stackoverflow 上的研究表明,编辑后的查询表明 wp_postmeta 表保存产品值,wp_posts 表保存产品 ID。

这是我面临的问题的屏幕截图:

你会看到meta_id不同而post_id相同,这是因为在WordPress中post_id是产品,在这种情况下它有很多变体,而meta_id是我需要为每个变体更新的_sale_price部分

我希望这是有道理的!

mysql sql wordpress woocommerce price
2个回答
2
投票

试试这个 (其中行

AND p.ID = 19
==> 19 是您的可变产品 ID):

UPDATE wp_postmeta as pm
JOIN  wp_postmeta as pm2 ON pm.post_id = pm2.post_id
SET pm.meta_value = ( pm2.meta_value - 350 )
WHERE pm.meta_key LIKE '_sale_price'
  AND pm2.meta_key LIKE '_regular_price'
  AND pm.post_id IN
    ( SELECT p2.ID
     FROM wp_posts AS p
     JOIN wp_posts AS p2 ON p2.post_parent = p.ID
     WHERE p.post_type = 'product'
       AND p.post_status = 'publish'
       AND p.ID = 19
       AND p2.post_type = 'product_variation'
       AND p2.post_status = 'publish' );

经过测试并且可以工作(之前一定要做好备份)

因此,在这个针对已定义变量产品 ID 的 SQL 查询中,它将用常规价格减去 350 来替换所有产品变体的销售价格……

如您所见,它有效......没有错误


0
投票

基于@LoicTheAztec,我将其扩展为通过meta_value限制变化:

## Get all Variation ID for parent 3859 which have meta_value like %bound-soft%
SET @ids = (SELECT GROUP_CONCAT(p2.ID) 
     FROM wp_posts AS p
     JOIN wp_posts AS p2 ON p2.post_parent = p.ID
     INNER JOIN wp_postmeta pm2 ON pm2.post_id = p2.ID
     WHERE p.post_type = 'product'
       AND p.post_status = 'publish'
       AND p.ID = 3859
       AND p2.post_type = 'product_variation'
       AND p2.post_status = 'publish' 
AND pm2.meta_value LIKE '%bound-soft%');

## Set price to 10 based on variation ids
UPDATE wp_postmeta as pm
SET pm.meta_value = '10'
WHERE  FIND_IN_SET(pm.post_id, @ids)
AND pm.meta_key = '_price';

## Price can be '_price' or '_regular_price' or '_sale_price'

## See results of @ids
SELECT @ids
© www.soinside.com 2019 - 2024. All rights reserved.