В личном кабинете выводятся заказы всех пользователей а не только одного
У меня есть раздел заказы, который делится на категории, и в одной категории у меня стоит таймер (hurrytimer) и когда он заканчивается, то появляются заказы из этой категории (До этого они не показываются). Вывожу через шорткод. Из-за того что вывожу через шорт код, то в этом куске кода переменные $customer_orders и orders имеют NULL. Решил эту проблему тем, что исмпользую вот такую функцию $customer_orders->orders = wc_get_orders($args);. Все работает, выводит заказы, но проблема в том, что выводит заказы всех пользователей. Допустим я ничего не покупал, а другой человек купил, и то что он купил покажет и у меня и у него и у всех остальных. Как сделать так, чтобы то что я купил, отображалось только у меня? Что я делаю не так? Скорее всего нужно еще что-то передавать в переменную, но что, я не знаю. Вот отрывок(начало) кода, который я использую:
add_filter( 'woocommerce_account_orders_columns', 'change_account_order_sorting' );
$customer_orders->orders = wc_get_orders($args);
foreach ( $customer_orders->orders as $customer_order ) {
$order = wc_get_order( $customer_order ); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
$item_count = $order->get_item_count() - $order->get_item_count_refunded();
Ответы (1 шт):
Это какой то трэш... - wc_get_orders($args) используется для получения конкретного заказа, а вы не пойми что творите. Надо запрашивать заказы конкретного пользователя, то есть если Вы авторизованы... если нет - до свиданья.
$customer = wp_get_current_user();
if ($customer){
$customer_orders = get_posts( array(
'numberposts' => -1,
'meta_key' => '_customer_user',
'meta_value' => get_current_user_id(),
'post_type' => wc_get_order_types(),
'post_status' => array_keys( wc_get_order_statuses() ),
));
}
Вот получение заказов пользователя, а то что у Вас, не пойми что.