Как добавить отображение всех заказов woocommerce?
Ссылка скопирована
Как добавить отображение всех заказов woocommerce для определенных ролей пользователей на стороне учетной записи /my-account/?
Дополнительно:
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Почему не работает связка 3X-UI на своем VPS и Necobox на Windows 10 и где искать причину?
0 ответов
1С-Битрикс
Из-за чего Bitrix 14.5 не импортирует инфоблоки из своего же CSV?
0 ответов
Искусственный интеллект
Что делать, если OpenRouter ограничивает доступ к моделям?
0 ответов
woocommerce
Как редактировать поля чека только для одного товара: Юкасса wordpress?
0 ответов

В стандартном
/my-account/orders/WooCommerce показывает пользователю только его заказы. Если нужно дать определенной роли просмотр всех заказов, это уже не обычный личный кабинет покупателя, а управленческий интерфейс. Сначала проверьте права доступа: человеку фактически открывается список чужих заказов и персональных данных.Самый безопасный путь — дать роли нужные capability и пустить её в админку WooCommerce, ограничив лишние разделы. Если нужен именно фронтенд, добавьте отдельный endpoint в My Account и выводите таблицу только для разрешенной роли.
add_action('init', function () { add_rewrite_endpoint('all-orders', EP_ROOT | EP_PAGES); }); add_filter('woocommerce_account_menu_items', function ($items) { if (current_user_can('manage_woocommerce')) { $items['all-orders'] = 'Все заказы'; } return $items; });
Вывод заказов:
add_action('woocommerce_account_all-orders_endpoint', function () { if (! current_user_can('manage_woocommerce')) { echo '<p>Недостаточно прав.</p>'; return; } $orders = wc_get_orders([ 'limit' => 50, 'orderby' => 'date', 'order' => 'DESC', ]); echo '<ul>'; foreach ($orders as $order) { echo '<li><a href="' . esc_url($order->get_view_order_url()) . '">Заказ #' . esc_html($order->get_order_number()) . '</a> — ' . esc_html(wc_get_order_status_name($order->get_status())) . '</li>'; } echo '</ul>'; });
После добавления endpoint один раз пересохраните постоянные ссылки. Для большого магазина обязательно делайте пагинацию, а не вывод всех заказов сразу.
Перед внедрением на рабочем сайте проверьте решение на копии или хотя бы сделайте резервную копию изменяемого файла. После правки включите отображение ошибок, откройте проблемную страницу в обычном и приватном окне, проверьте консоль браузера и логи PHP. Если задача связана с WordPress, WooCommerce или ACF, дополнительно проверьте поведение после очистки кэша и после выхода из админки: часть ошибок видна только для незалогиненного пользователя.
Если код работает только в одном шаблоне, лучше не оставлять его разрозненно в нескольких файлах. Вынесите повторяемую логику в функцию, небольшой плагин или template part, а в шаблоне оставьте только вызов. Так проще поддерживать решение после обновления темы, плагинов и PHP.