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

时间:2017-10-26 15:24:53

标签: php mysql wordpress woocommerce cron

重新创建此问题的步骤:

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

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

如果我尝试在产品视图上检查$product->is_in_stock(),我会1(不正确)。 如果我将此产品添加到购物车并检查同样的事情,我会得到0(正确)。

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

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

其他信息:

这是一个产品过期销售日期后wp-admin显示价格的图像。 Displayed price in wp-admin after expired sale date

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

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

更新 在我将WC版本更改为2.7.0 RC 1之后,价格又回到了正确的价格,但更新WC搞砸了很多其他的东西,所以更新不是一个选项。当预定的销售结束并且我无法弄清楚是什么时,某些东西没有正确更新。

1 个答案:

答案 0 :(得分: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();
}