Обновление программно даты изменения заказов Woocommerce - PullRequest
0 голосов
/ 12 декабря 2018

Я получаю список отложенных ордеров, собираю некоторые данные и выясняю, редактировалось ли последнее сообщение в течение 2 недель.Если нет, я делаю некоторые вещи, а затем пытаюсь установить дату изменения на сегодняшний день, update_post_meta не работает, он ничего не делает.Все мои объявленные переменные наверху работают, и я получаю внутри оператора if.

    $customer_orders = wc_get_orders(array(
        'limit'    => -1,
        'status'   => array('wc-pending')
    ) );

    foreach($customer_orders as $order) {

        $orderData = $order->get_data();
        $orderId = $orderData['id'];
        $orderDate = $orderData['date_modified']->date('Y-m-d H:i:s');
        $orderDatePlus2Weeks = new DateTime($orderDate);
        $orderDatePlus2Weeks->add(new DateInterval('P14D'));
        $orderDatePlus2Weeks = $orderDatePlus2Weeks->format('Y-m-d H:i:s');
        $today = date("Y-m-d H:i:s");

        if($orderDatePlus2Weeks <= $today){
            echo 'THIS ORDER NEEDS UPDATED';
            // Do Some Stuff
            update_post_meta($orderId, 'date_modified', $today);
        }else{
            echo 'THIS ORDER DOES NOT NEED UPDATED';
        }
    }

1 Ответ

0 голосов
/ 12 декабря 2018

Поскольку объекты Woocommerce 3 и CRUD , вы можете использовать WC_Order методы получения и установки.Попробуйте это:

$customer_orders = wc_get_orders(array(
    'limit'    => -1,
    'status'   => array('wc-pending')
) );

foreach($customer_orders as $order) {
    $order_id = $order->get_id();

    $date_modified = $order->get_date_modified();
    $time_zone = $date_modified->getTimezone();

    $date_modified_p14d = new DateTime($date_modified);
    $date_modified_p14d->add(new DateInterval('P14D'));

    $now = new DateTime();
    $now->setTimezone($time_zone);

    if( $date_modified_p14d->getTimestamp() <= $now->getTimestamp() ){
        echo 'THIS ORDER NEEDS UPDATED';
        // Do Some Stuff
        $order->set_date_modified($now->getTimestamp());
        $order->save();
    }else{
        echo 'THIS ORDER DOES NOT NEED UPDATED';
    }
}

Проверено и работает.

...