Woocommerce将销售价格定为正常价格 - 15%的折扣

时间:2015-07-18 16:30:51

标签: mysql wordpress woocommerce

我在woocommerce中有很多产品(近30,000)。 正常价格已经设置正确,现在我想将销售价格设置为具有一定百分比折扣的常规价格。 我尝试使用一些插件,但由于产品数量的原因,我总是遇到PHP内存错误。 所以我试图直接在MYSQL中解决问题。

这是我的SQL代码:

UPDATE s SET s.meta_value = r.meta_value * 0.85, FROM wp_postmeta s INNER JOIN wp_postmeta r ON s.post_id = r.post_id WHERE s.meta_key = '_sale_price' AND r.meta_key = '_regular_price'

但是SQL语法中存在错误。 请向我建议如何更正代码。

3 个答案:

答案 0 :(得分:1)

我刚刚找到了答案 - 经过大量的挖掘:

UPDATE wp_postmeta AS s
LEFT JOIN wp_postmeta AS r
ON s.post_id = r.post_id
SET s.meta_value = r.meta_value * 85 / 100
WHERE s.meta_key = '_sale_price'
AND r.meta_key = '_regular_price'

数据库中的一切都还可以,但现在问题是我无法在产品页面上看到修改。只有当我在管理员中输入产品然后从那里保存时,销售价格才会在产品页面中刷新。谁知道为什么?

答案 1 :(得分:1)

Alessandro,它实际上正在运作。但是你的成功只有一半:

UPDATE wp_postmeta AS s
LEFT JOIN wp_postmeta AS r
ON s.post_id = r.post_id
SET s.meta_value = r.meta_value
WHERE s.meta_key = '_sale_price'
AND r.meta_key = '_regular_price'

UPDATE wp_postmeta AS s
LEFT JOIN wp_postmeta AS r
ON s.post_id = r.post_id
SET s.meta_value = r.meta_value
WHERE s.meta_key = '_price'
AND r.meta_key = '_sale_price'

这样你就有了销售价格和当前的#34;价格更新。 添加任何新产品时,您必须单独运行这两个脚本。 并且不要忘记使用任何缓存插件清除缓存,例如W3 Total Cache或类似内容。

p.s。:如果未来的Woocommerce版本将包含切换功能" current"价格为_sale或_regular。

答案 2 :(得分:0)

您可以通过woocommerce_get_sale_price过滤器永久过滤销售价格。

function so_31493236_sale_price( $sale_price, $product ) {
    $sale_price = $product->get_regular_price() * 0.15;
    return $sale_price;
}
add_filter( 'woocommerce_get_sale_price', 'so_31493236_sale_price', 10, 2 );