预定销售已结束,但查看产品时可变产品似乎仍在销售 - Woocommerce

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

重现此问题的步骤:

  • 创建可变产品
  • 设置变体的销售价格
  • 设定变体的销售时间表
  • 等到结束日期之后
  • 转到前端,查看产品(或产品列表),看到销售徽章和销售价格仍然可见
  • 将产品添加到购物车,打开购物车并查看价格是否正确(已设置回常规)
  • 如果你在wp-admin中手动更新产品,问题就解决了(但这确实违背了预定销售的目的)

我正在使用 Woocommerce v2.6.14 和 Wordpress v4.7.6。

如果我尝试在产品视图上检查

$product->is_in_stock()
,我会得到
1
(不正确)。 如果我将此产品添加到购物车并检查相同的内容,我会得到
0
(正确)。

因此,问题是变化价格不会在销售结束日期后自动更新

我真的很感激每一个建议! :) 谢谢!

附加信息:

这是一张产品销售日期过期后在 wp-admin 中显示价格的图片。

在添加到购物车之前销售价格仍保存在 WC 变量对象中。将产品添加到购物车后,最小和最大变化销售价格与正常价格相同,并且一切正常。

如果我使用

$product->get_price_html();

,我在添加到购物车操作之前会得到错误的值,如果我使用 
$product->get_price();
,我会得到正确的值。

更新: 在我将 WC 版本更改为 2.7.0 RC 1 后,价格恢复到正确的价格,但更新 WC 搞乱了很多其他事情,因此更新不是一个选择。当预定的销售结束时,有些东西没有正确更新,我不知道是什么。

php mysql wordpress woocommerce cron
2个回答
0
投票

woocommerce_scheduled_sales

 事件会触发计划销售产品的实际定价变化。此事件应该每天运行一次,但也许不会发生。
要查找站点 WP Cron 事件,您可以使用以下插件:

https://wordpress.org/plugins/wp-crontrol/

通过这个插件,你可以立即运行任何 cron 事件。你应该找到

woocommerce_scheduled_sales

 并运行它。

您也可以在功能主题中使用此代码每六个小时运行一次事件。

<?php function myprefix_custom_cron_schedule( $schedules ) { $schedules['every_six_hours'] = array( 'interval' => 21600, // Every 6 hours 'display' => __( 'Every 6 hours' ), ); return $schedules; } add_filter( 'cron_schedules', 'myprefix_custom_cron_schedule' ); //Schedule an action if it's not already scheduled if ( ! wp_next_scheduled( 'myprefix_wc_scheduled_sales' ) ) { wp_schedule_event( time(), 'every_six_hours', 'myprefix_wc_scheduled_sales' ); } ///Hook into that action that'll fire every six hours add_action( 'myprefix_wc_scheduled_sales', 'myprefix_run_wc_scheduled_sales' ); //create your function, that runs on cron function myprefix_run_wc_scheduled_sales() { //your function... wc_scheduled_sales(); }
    

0
投票
也许这篇文章对有类似问题的人有用,所以我就把这篇文章留在这里:)

https://linksoftwarellc.com/blog/woocommerce-scheduled-sales/

© www.soinside.com 2019 - 2024. All rights reserved.