每周一自动在 WooCommerce 中将订单状态从处理中更新为已完成

Update order status from processing to completed in WooCommerce automatically on every Monday

我需要在 WooCommerce 中的特定时间段后更新所有 'processing' 订单的订单状态。 我的目标是通过 cron 作业来做到这一点。所以我在 WP Control 中添加了这个挂钩,每周安排:woocommerce_complete_processing_order_weekly

这是我在 functions.php 中添加的内容:

add_action( 'woocommerce_complete_processing_order_weekly', 'custom_woocommerce_complete_order', 10, 0 );

function custom_woocommerce_complete_order ( $order_id ) { 
    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );
    $order->update_status( 'completed' );
}

你能帮我解决这个问题吗?

add_action( 'admin_init', 'update_order_status_on_monday' );

function update_order_status_on_monday() {

    if ( date( 'D', strtotime( 'now' ) ) === 'Mon' && !get_transient( '_updated_order_status_on_monday' ) ) {

        $processing_orders   = wc_get_orders( $args              = array(
            'numberposts'    => -1,
            'post_status'    => 'wc-processing',
        ) );

        if ( !empty( $processing_orders ) ) {
            foreach ( $processing_orders as $order )
                $order->update_status( 'completed' );
        }
        set_transient( '_updated_order_status_on_monday', true );
    } elseif ( date( 'D', strtotime( 'now' ) ) !== 'Mon' ) {
        delete_transient( '_updated_order_status_on_monday' );
    }
 }

将此代码添加到您的活动主题中functions.php