Anastasiya96
Разрушитель (V)
учусь писать плагины, пишу небольшой плагин для вукомерса. суть плагина: выводит в деталях заказа отметку "новый пользователь" если завершенных заказов у пользователя меньше 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>';
}
}
}