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

标签 php mysql wordpress woocommerce cron

重现此问题的步骤:

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

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

如果我尝试在产品 View 中检查 $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 搞砸了很多其他事情,所以更新不是一个选择。当预定的销售结束时,有些东西没有正确更新,我不知道是什么。

最佳答案

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();
}

关于php - 预定销售结束,但查看产品时可变产品似乎仍在销售 - Woocommerce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46958182/

相关文章:

html - 页面底部的白色带

php - 整理问题,是否可以从 utf8mb4_unicode_ci 降级/转换为 utf8_general_ci?

mysql - 如何优化 2500 万行的批量 sql 更新

mysql - 将 sql 数据库导出到我的 PC 是否安全?

php - 查找哪些唯一数字被求和以产生结果数字

mysql - Wordpress 页面信息存储在哪里

php - 电子邮件脚本发送电子邮件但抛出无法重新声明 spamcheck() 错误

php - 从提取的 PDF 文本中删除多余的空格

javascript - Owl Carousel 未在 Elementor 实时预览中显示

c# - 文字换行以适合一定比例(不是大小)的矩形