我在我的网站上运行了一个cron作业,它在14天后将订单更新为自定义订单状态,当它们完成时。一切正常,但有时cron不运行,我得到这个错误。我一直在调查这个问题,但不能解决它。
我的cron工作代码是贝娄:
function completed_orders_reminder_daily_process() {
$days_delay = 14;
$one_day = 24 * 60 * 60;
$today = strtotime( date('Y-m-d') );
$orderStore = (array) wc_get_orders( array(
'limit' => 50,
'status' => 'wc-completed',
'date_created' => '<' . ( $today - ($days_delay * $one_day) ),
) );
if ( sizeof($orderStore) > 0 ) {
foreach ( $orderStore as $order ) {
if ( get_post_meta($order->get_id(), 'Reminder', true) !== 'True' )
update_post_meta( $order->get_id(), 'Reminder', 'True');
$order->update_status('reminder', 'Odoslaný email na recenziu');
}
}
}
add_action( 'completed_orders_reminder_daily_process', 'completed_orders_reminder_daily_process' );
我得到的错误
Uncaught Error: Call to undefined method Automattic\WooCommerce\Admin\Overrides\OrderRefund::update_status() - Stack trace: #0 {main} thrown in line $order->update_status('reminder', 'Odoslaný email na recenziu');
我需要的是顺利运行cron作业而不会得到订单退款错误。提前感谢!
1条答案
按热度按时间pxiryf3j1#
您对
wc_get_orders
的调用似乎可以返回OrderRefund
的示例,而此类没有方法update_status
(reference)。您可以检查特定的对象或类别是否有
method_exists
的方法。如果你想忽略所有在
foreach
中没有update_status
方法的对象,你可以这样做: