Обновлять статус заказа от обработки до выполнения в WooCommerce автоматически каждый понедельник - PullRequest
1 голос
/ 27 апреля 2020

Мне нужно обновить статус заказа всех «обрабатывающих» заказов после определенного c периода времени в WooCommerce. Я хотел сделать это с помощью cron. Поэтому я добавил этот хук в WP Control с недельным графиком: woocommerce_complete_processing_order_weekly

Вот что я добавил в свои функции. 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' );
}

Не могли бы вы помочь мне с этим

1 Ответ

1 голос
/ 27 апреля 2020
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' );
    }
 }

Добавьте этот код в функции вашей активной темы. php

...