Подсчет завершенных заказов пользователя WooCommerce

Anastasiya96

Писатель
Сообщения
114
Симпатии
54
Баллы
3 232
учусь писать плагины, пишу небольшой плагин для вукомерса. суть плагина: выводит в деталях заказа отметку "новый пользователь" если завершенных заказов у пользователя меньше 2, если больше 2 выводится отметка "вернувшийся пользователь" и рядом выводится число заказов со статусом "завершен". в целом плагин работает, но заметила проблему подсчета. я делаю две проверки либо по id клиента, либо по эмейлу и проблема в том, что если пользователь вошел на сайт под своей учеткой оно считает по id и выводит количество заказов по id, а если он не авторизируясь делает заказ то считает по эмейлу и в этих заказах соответственно выводит другое число, а должно быть что у одного пользователя на всех заказах выводит одинаковое число, но как это сделать не понимаю. в идеале проверять на id, эмейл и телефон и если есть хоть одно из совпадений то считать +1 к числу, а не как сейчас считается отдельно по всем полям. как бы это можно было объеденить в подсчете?

код:
PHP:
<?php
/*
 * Plugin Name: Kasha returning customers
 * Plugin URI: https://urich.org
 * Description: Displays information returning customer or new, and also displays the number of completed orders
 * Version: 1.0.0
 * Author: Urich
 * License: GPLv2 or later
 */


if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
    add_action( 'woocommerce_admin_order_data_after_order_details', 'render_customer_is_new_field', 1 );
    function render_customer_is_new_field( $order ) {
        if( is_a( $order, 'WC_Order') ) {
            $args = array(
                'limit'  => -1,
                'status' => array('wc-completed'),
                'return' => 'ids',
            );

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

            $orders_ids   = wc_get_orders( $args );
            $orders_count = intval( count($orders_ids) );
            $markData     = ( $orders_count >= 2 )
                ? array('status-processing', 'Returning customer')
                : array('status-on-hold', 'New Customer');

            echo '
            <p class="kasha-customer-counter" style="float: left">
                <mark class="order-status '. $markData[0] .'">
                    <span>'. $markData[1] .' <strong style="color:#ff0000;font-weight: 900;"> '. $orders_count .'</strong></span>
                </mark>
            </p>';
        }
    }
}
 
Верх