woocommerce_cancel_unpaid_orders过滤器无法实时运行-Woocommerce [英] woocommerce_cancel_unpaid_orders filter is not working on live - Woocommerce

查看:181
本文介绍了woocommerce_cancel_unpaid_orders过滤器无法实时运行-Woocommerce的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面的代码在localhost上运行正常,但在实时服务器上不运行

The below code is working fine on localhost but is not working on live server

该代码用于将所有未付款订单标记为失败",即使在创建订单10分钟后仍未收到付款

The code is used to Mark all unpaid order as 'Failed' if the payment is not received even after 10 minutes of order creation

该代码是从 Woocommerce插件(第852到877行)

// Unpaid orders marked as Failed if payment is not received even after 10 minutes of order creation

    function custom_wc_cancel_unpaid_orders() {
        $held_duration = strtotime( '-10 minutes');
        $data_store    = WC_Data_Store::load( 'order' );
        $unpaid_orders = $data_store->get_unpaid_orders( strtotime( '-10 minutes', current_time( 'timestamp' ) ) );
        if ( $unpaid_orders ) {
            foreach ( $unpaid_orders as $unpaid_order ) {
                $order = wc_get_order( $unpaid_order );
                if ( apply_filters( 'woocommerce_cancel_unpaid_order', 'checkout' === $order->get_created_via(), $order ) ) {
                    $order->update_status( 'failed', __( 'Unpaid order marked failed - time limit reached.', 'woocommerce' ) );
                }
            }
        }
        wp_clear_scheduled_hook( 'woocommerce_cancel_unpaid_orders' );
        wp_schedule_single_event( time() + ( absint( $held_duration ) * 60 ), 'woocommerce_cancel_unpaid_orders' );
    }
    add_action( 'woocommerce_cancel_unpaid_orders', 'custom_wc_cancel_unpaid_orders' );

有人可以告诉我为什么它可以在localhost上运行而不能在实时服务器上运行吗?

Can someone tell me why it works on localhost but not on live server?

推荐答案

使用此插件并将cron作业用于功能: woocommerce_cancel_unpaid_orders_woo

Use this plugin and use a cron job for function: woocommerce_cancel_unpaid_orders_woo

<?php
/**
 * Plugin Name: WooCommerce Cron Proxy
 */

add_action( 'woocommerce_cancel_unpaid_orders_woo', function() {
do_action_ref_array( 'woocommerce_cancel_unpaid_orders', func_get_args() );
}, 10, 10 );

?>

这篇关于woocommerce_cancel_unpaid_orders过滤器无法实时运行-Woocommerce的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆