Шорткод WooCommerce My Account

18 янв. 2018 г., 18:44:53
Просмотры: 20.6K
Голосов: -2

Я использую последние версии 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

Кто-нибудь знает, почему страница не отображается правильно?

6
Комментарии

Может ли тот, кто поставил минус вопросу, объяснить причину? :thinking_face:

Chin Leung Chin Leung
21 янв. 2018 г. 16:12:37

Под "показывает стандартный index.php" вы имеете в виду, что часть WooCommerce не отображается, но показывается обычное содержимое страницы? Вы пробовали отключить все остальные плагины и использовать одну из стандартных тем, без ваших изменений?

swissspidy swissspidy
21 янв. 2018 г. 18:26:40

@swissspidy Да, именно так. В норме должен отображаться шаблон WooCommerce для личного кабинета, а не index.php темы.

Chin Leung Chin Leung
22 янв. 2018 г. 01:10:15

Что происходит, когда вы переходите по адресу http://example.com/my-account/? Какие у вас настройки WordPress Address и Site Address в разделе Настройки > Общие?

Abhik Abhik
22 янв. 2018 г. 06:46:56

У меня не получается воспроизвести эту проблему. Вы пробовали выполнить шаги по отладке, которые я упомянул выше? Также пробовали удалить шорткод и вручную написать его заново?

swissspidy swissspidy
22 янв. 2018 г. 13:13:34

Минусую, потому что 1. Вопрос про WooCommerce не по теме. 2. Отсутствие кода означает, что все ответы могут быть лишь догадками. 3. Или, другими словами, вопрос слишком локализован и вряд ли может быть решён без доступа к вашему серверу. 4. Вы установили награду, поэтому вопрос не может быть закрыт, и единственный доступный вариант — поставить минус (и, пожалуйста, не приводите аргумент "но здесь есть вопросы про WooCommerce").

Mark Kaplun Mark Kaplun
27 янв. 2018 г. 20:33:15
Показать остальные 1 комментариев
Все ответы на вопрос 4
0

так do_shortcode('[woocommerce_my_account]'); работает в index.php, а [woocommerce_my_account] не работает на обычной странице wp admin.

пробовали ли вы искать проблему с функцией the_content()? проверьте, правильно ли настроен цикл в файле шаблона вашей темы.

23 янв. 2018 г. 13:48:03
2

Пожалуйста, убедитесь, что вы проверили следующее:

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

Спасибо!

23 янв. 2018 г. 13:50:30
Комментарии

add_theme_support('woocommerce') не является обязательным. Я успешно протестировал это без него.

swissspidy swissspidy
23 янв. 2018 г. 13:54:06

@swissspidy вы правы... это просто для того, чтобы сообщить WordPress, что тема поддерживает WooCommerce

Sachit Sachit
23 янв. 2018 г. 13:58:44
0

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

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

27 янв. 2018 г. 19:58:07
1
-2

Вам следует использовать echo при работе с do_shortcode. Измените код на:

echo do_shortcode('[woocommerce_my_account]');

Подробнее о функции do_shortcode можно узнать здесь: https://developer.wordpress.org/reference/functions/do_shortcode/. Удачи!

24 янв. 2018 г. 11:30:25
Комментарии

Это не та проблема, которую нужно решать сейчас. Они показали, что использование do_shortcode() работает. Ошибка в том, что страница "Мой аккаунт" не работает автоматически.

swissspidy swissspidy
24 янв. 2018 г. 12:11:54