1. Проблема: WooCommerce 4.1.0: \ woocommerce \ templates \ панель управления myaccount. php
в строке 46 Я хотел бы добавить свой код, содержащий несколько SQL запросов, чтобы показать активному клиенту, как много денег у него на счету («$account_balance
») в разделе «Моя учетная запись» после входа в систему.
Я могу получить активный user_id:
$user_id = get_current_user_id();
$user = new WC_Customer( $user_id );
Но я не знаю, как получить текущий customer_id
(обязательно, потому что в таблицах нет user_id
).
2. Что я пробовал:
Я создал таблицу в phpMyAdmin с именем L16_transfers
, содержащую следующие столбцы:
transaction_id
customer_id
transfer_date
eur_transferred
eur_refunded
first_name
last_name
order_id
Из этой настраиваемой таблицы я хочу получить все входящие и исходящие транзакции (eur_transferred
и eur_refunded
).
Другая таблица, которую я использую, - L16_wc_order_stats
, из которой я хочу получить net_total
. Однако L16_wc_order_stats
содержит столбец customer_id
, но не user_id
(присвоенные номера в базе данных отличаются).
Запросы 3 SQL должны возвращать суммы - переводов - возвратов - заказов, которые Я буду прибавлять / вычитать, чтобы получить общий текущий баланс.
3. Мой код:
<?php
//
// variable declarations
//
global $account_balance, $transferred_total, $refunded_total, $orders_total, $net_total;
global $wpdb;
$account_balance = 0.00;
$transferred_total = 0.00;
$refunded_total = 0.00;
$orders_total = 0.00;
$user_id = get_current_user_id();
$user = new WC_Customer( $user_id );
$customer_id = get_customer_id();
$customer = new WC_Customer( $customer_id );
//
// first output testing
//
echo "Customer id: " . print_r($customer_id). "<br>"; // I always get NULL, also tried with sprintf and echo
echo "Customer id: " . $customer_id . "<br>";
print_r($customer_id);
sprintf($customer_id);
print_r ($customer); // I always get NULL, also tried with sprintf and echo
echo "Customer: " . $customer. "<br><br>";
echo "Customer: " . print_r($customer);
echo "User id: " . $user_id . "<br>"; // user_id output works
var_dump($user["id"]["display_name"]["role"]);
echo var_dump($user['id']);
//
// Three SQL queries
//
$transferred_total = $wpdb->get_var("
SELECT SUM(eur_transferred) FROM L16_transfers WHERE customer_id = $customer_id
");
echo "<b>" . "Transfers grand total: " . "</b>" . $transferred_total . " €<br>";
$refunded_total = $wpdb->get_var("
SELECT SUM(eur_refunded) FROM L16_transfers WHERE customer_id = $customer_id
");
echo "<b>" . "Refunds grand total: " . '</b>' . $refunded_total . " €<br>";
$orders_total = $wpdb->get_var("
SELECT SUM(net_total) FROM L16_wc_order_stats WHERE customer_id = $customer_id
");
echo "<b>Orders grand total: </b>" . $orders_total . " €<br><br>";
var_dump ($orders_total); // solely for testing output
$account_balance = $transferred_total + $refunded_total - $orders_total
var_dump ($account_balance);
echo $account_balance;
echo "<h1>Your current account balance: </h1><b>" . $account_balance . "</b>";
?>
</p>
Думаю, я допустил некоторые ошибки, касающиеся обработки массивов или неверно интерпретированных результатов запросов.
(Я новичок в WooCommerce / WordPress и имею только базовые c знание как PHP, так и SQL.)
Заранее большое спасибо за любую помощь, которую вы можете оказать в исправлении моего кода.