Проверка времени заказа WooCommerce

Мне необходимо в деталях заказа выводить информацию новый это пользователь или вернувшийся, а так же количество его заказов со статусом completed. Для этого я проверяю количество заказов со статусом completed у пользователя с текущим id и если их больше 2х вывожу информацию, что это вернувшийся пользователь. Однако мой код отрабатывает правильно, только если я захожу под ролью администратора, если же захожу под шоп менеджером, я вижу не правильную информацию. Вопрос в том, как к моему коду еще добавить проверку на наличие времени оплаты?И если время null, то заказ не считать завершенным.

Мой код:

 add_filter( 'woocommerce_admin_order_data_after_order_details', 'renderCustomerIsNewField' );

 function renderCustomerIsNewField($order){
    $customer_has_existing_orders  = wc_get_orders(
        array(
            'customer_id' => $order->get_user_id(),
            'status' => 'completed'
        )
    );

    $orders_count = count($customer_has_existing_orders);

    $markData = ( (int)count($customer_has_existing_orders) >= 2)
        ? array('status-processing', 'Returning customer')
        : array('status-on-hold', 'New Customer');
    
    echo '
    <p>
        <mark class="order-status '. $markData[0] .'">
            <span>'. $markData[1] .' <strong style="color:#ff0000;font-weight: 900;"> '. $orders_count .'</strong></span>
        </mark>
    </p>
    ';
}

Ответы (1 шт):

Автор решения: Darth KYL

Не вижу смысл добавлять проверку на время оплаты, потому что вы и так выбираете все заказы со статусом wc-comleted. Я протестировал ваш код, он работает корректно. Единственный момент который я бы исправил это формирование аргументов для получения заказов текущего пользователя, потому что когда пользователь незарегистрирован на сайте его id равен 0 и мне кажется что это не совсем коректно. Все незарегистрированные пользователи попадут под этот фильтр. Поэтому я бы изменил формирование аргументов следующим образом

$args = [
    'status' => 'completed',
    'return' => 'ids',
];

if ( $order->get_user_id() ) {
    $args['customer_id'] = $order->get_user_id();
} else {
    $args['customer'] = $order->get_billing_email();
}

$customer_has_existing_orders  = wc_get_orders( $args );
→ Ссылка