Шорткод WooCommerce My Account
Я использую последние версии WordPress (4.9.2) и WooCommerce (3.2.6) и столкнулся с проблемами при переопределении шаблона My Account
.
Я создал файл в моей теме:
theme-name/woocommerce/myaccount/my-account.php
У меня есть страница в WP Admin
с post_content
, установленным как:
[woocommerce_my_account]
Однако, когда я открываю ссылку http://example.com/en/my-account
, отображается стандартный index.php
.
Если я помещаю следующий код в мой index, я вижу страницу аккаунта:
do_shortcode('[woocommerce_my_account]');
Я также убедился, что страница аккаунта WooCommerce установлена правильно в WooCommerce > Настройки > Аккаунт > Страница личного кабинета.
В теле отрендеренной страницы я вижу следующие классы:
page-template-default page page-id-8 logged-in desktop woocommerce-account woocommerce-page
Кто-нибудь знает, почему страница не отображается правильно?

так do_shortcode('[woocommerce_my_account]');
работает в index.php, а [woocommerce_my_account]
не работает на обычной странице wp admin
.
пробовали ли вы искать проблему с функцией the_content()
? проверьте, правильно ли настроен цикл в файле шаблона вашей темы.

Пожалуйста, убедитесь, что вы проверили следующее:
- Добавили ли вы поддержку WooCommerce в вашей теме?
add_theme_support('woocommerce')
- В админ-панели перейдите в подменю
Статус
внутри менюWooCommerce
и проверьте блокПереопределения шаблонов
, чтобы убедиться, что отображается ваш шаблон. - Убедитесь, что в шаблоне вашей страницы вызывается функция
the_content()
внутри цикла.
Спасибо!

Я считаю, что ваша проблема не связана с шорткодом, шаблоном страницы или файлом index.php. Всё должно работать независимо от этого.
Я вижу, что у вас многоязычная настройка. Вам стоит изучить, как WooCommerce взаимодействует с этим, так как это не всегда просто. Большинство плагинов для перевода (например WPML) имеют специальные вспомогательные плагины, которые обеспечивают корректную работу WooCommerce с ними.

Вам следует использовать echo при работе с do_shortcode
. Измените код на:
echo do_shortcode('[woocommerce_my_account]');
Подробнее о функции do_shortcode
можно узнать здесь: https://developer.wordpress.org/reference/functions/do_shortcode/. Удачи!
