ArtKom
@ArtKom

Как изменить header.php для магазина woocommerce?

Здравствуйте уважаемые сообщники. Есть сайт на вордпрессе и с магазином woocommerce.

Для самого сайта и разных его разделов используются разные шапки. Т.е. Есть header.php, header-page1.php, ... , header-pageN.php

Для любой страницы выбор своей шапки достаточно прост. Достаточно написать в шаблоне get_header('page1');

Но как аказалось сделать такое же для страницы магазина невозможно. Иными словами если в файле archive-product.php прописать вывод get_header('my-store'); - работать не будет. Будет загружаться исключительно стандартный header.php!!!
Притом в самом шаблоне поумолчанию указано, get_header('shop');

Вопрос? Каким образом можно заменить вывод header.php для магазина на какой-то другой? Заранее спасибо!
  • Вопрос задан
  • 2378 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Spak-v
Все работает на стандартной функции get_header(), сделать можно.

1.Свой header для woo?
В корне темы создать файл header-shop.php (он и будет подгружаться по умолчанию)

2. Сделать например свой header для товара?
А. В корневой папке темы создать папку (если нет) woocommerce
( САЙТ\\wp-content\themes\МОЯ ТЕМАт\woocommerce )
Б. В нее скопировать из папки САЙТ\wp-content\plugins\woocommerce\templates файл single-product.php в созданную папку в пункте А
В. В single-product.php заменить
get_header('shop') на get_header('mystore')
Г. В корневой папке темы создать файл header-mystore.php, который и будет хедером.
Д. Если нужно создать еще одну шапку, то делать по аналогии.

P/S
Много тупых советов можно получить от "экспертов". Представляю какие сайты они делают...
И Woo писали действительно жадные дебилы. Их логика в том, чтобы никто не мог разобраться в множестве хуков, переменных и т.д + за каждое простейшее изменение платил деньги или устанавливал еще бестолковые плагины, а результат - тормоза, много обращений к базе данных и куча мусорного кода.
Ответ написан
maxxannik
@maxxannik
Сайты на WordPress + Интернет магазины WooCommerce
Тут либо отказываться от woocommerce.php и пилить свои шаблоны. Дорого, вероятно хрупко, и глупо.
Либо писать свой API. Например так: get_header(apply_filters('my_shop_header', 'shop'));
И потом в functions php на условных тегах подставлять нужные шапки.
Не совсем WP API. Но иначе сохранить совместимость с системой шаблонов Woo будет проблематично. А она отличается от системы WP.
Проще написать свой магазин, но по затратам это будет в 10-100 раз дороже. Птм надо выбирать. Изобретать велосипед или добавлять свой интерфейс.
Ответ написан
@Minusator
Проще простого. Создаем файл header-shop.php и ложим в тему, а в папку woocommerce
Ответ написан
@zeaovede
Решение, которое было предложено тут с созданием header-shop.php в корне темы у меня не сработало. Но я нашел кое-что лучше. В корне темы находим файл page.php, и там вместо дефолтного header вывести следующий код:

if ( class_exists( 'WooCommerce' ) && is_account_page() ) {
    get_header('shop');
} else {
    // текущий код header.php
}

В моем примере нужный мне header будет выводиться на странице мой аккаунт, в любом другом месте будет выводиться дефолтный. Проверено.
Очень важно, выводить именно в page.php, иначе, если это сделать просто через header в корне темы, то будет выводиться сразу два хеадера. В том месте где нашел ответ рекомендовано было выводить через header, но у меня сработало только через page.php. Поэтому, можете проверять.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы