Дата изменения статуса пользовательского заказа Woocommerce - PullRequest
0 голосов
/ 09 декабря 2018

В Woocommerce я хотел бы показать дату и время при обновлении статуса заказа для статуса пользовательского заказа.Я использую $order->get_date_modified();, но это не подходит:

$order_transporte =  wc_get_order_status_name( $order->get_status() );
if($order_transporte == "Transporte"){
    $date_modified = $order->get_date_modified();
    echo sprintf( '<tr><td>%s</td><td>Transporte</td></tr>', $date_modified->date("d/M/Y g:i:s"));
}

Есть ли в woocommerce какая-либо функция для получения даты обновления из определенного статуса?

1 Ответ

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

Для пользовательского статуса заказа вы можете использовать woocommerce_order_status_{$status_transition[to]} составное действие, где вы замените {$status_transition[to]} на пользовательский блок состояния, чтобы установить дату, измененную для этого пользовательского статуса, например:

add_action( 'woocommerce_order_status_transporte', 'action_on_order_status_transporte', 10, 2 );
function action_on_order_status_transporte( $order_id, $order ) {
    // Set your default time zone (http://php.net/manual/en/timezones.php)
    date_default_timezone_set('Europe/Paris');
    $order->update_meta_data('_date_transporte', strtotime("now") );
    $order->save();
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).Протестировано и работает.

Затем вы будете использовать следующее для отображения вашего пользовательского статуса изменения даты / времени:

if( $order->has_status('transporte') ){
    // Set your default time zone (http://php.net/manual/en/timezones.php)
    date_default_timezone_set('Europe/Paris');
    $date_transporte = date( "d/M/Y g:i:s", $order->get_meta('_date_transporte') );
    echo '<tr><td>'.$date_transporte.'</td><td>'.__("Transporte").'</td></tr>';
}
...