Создание разных шаблонов для страниц и WordPress записей
Подобная задача может возникнуть, когда вам в пределах одного сайта нужно иметь разные шаблоны страниц в плане оформления. Самая простая ситуация, что приходит на ум: скрытие рекламы/баннеров в избранных статьях; либо вдруг захотите удалить в некоторых публикациях списки похожих заметок или, допустим, какие-то элементы сайдбара. Сегодня научу вас это делать.
К данному вопросу возвращаюсь уже не первый раз, захотел собрать все нюансы и знания в одном месте. К счастью, современные методы по сравнению с прошлыми модификациями, максимально просты. Вам даже не надо ставить дополнительные модули, как раньше. Разработчики WordPress действительно упрощают и улучшают систему.
Итак, сегодня рассмотрим:
- Общий алгоритм решения задачи;
- Реализация разных сайдабаров, футеров, хедеров.
- Альтернативное оформление постов по категориям.
- Дополнительные фишки.
Разные шаблоны страниц / записей в WordPress
Теоретически все, что вам нужно в этом случае — размещение некого кода в самом верху соответствующего файла:
<?php /* * Template Name: NoAds Single Page * Template Post Type: post, page, product */ ?> |
В первой строке указывается название для WP админки, во второй определяются типы записей, в которых можно этот макет применять (в примере: post, page и product).
То есть по факту, вам достаточно сделать один новый шаблон страницы WordPress, что будет задавать правила отображения информации на сайте для всех заметок с контентом. Однако тут все зависит от того, отличаются ли коды в single.php и page.php — если да, то придется выполнить модификацию каждого из них.
Общий алгоритм действий:
1. С помощью FTP клиента FileZilla заходите на свой хостинг в директорию с названием установленной темы wp-content/themes/имя_темы (или дочерней).
2. Копируете файл, используемый для отображения постов/страниц (single.php и page.php) на локальный компьютер.
3. Переименовываем, например, в page-new.php или page-noads.php и т.п. (название роли не играет).
4. Дальше приступаем к его редактированию с помощью Sublime Text или Notepad++. В самом верху добавляете упомянутый ранее код (заменяя существующий, если он там есть). Получится вот так:
5. Загружаете новый вариант обратно на хостинг в ту же директорию.
Выбор шаблона страницы в WordPress
Теперь переходим в админку системы, открываем любую публикацию для редактирования и ищем там следующий блок:
Отображаемое здесь название задается в строке Template Name.
Кстати, удобно, что доступно массовое редактирование постов, то есть изменить шаблон страниц можно сразу у нескольких объектов. Переходите в пункт «Все записи», где отмечаете парочку статей и выбираете в «Действиях» значение «Изменить».
После выбора не забудьте кликнуть «Обновить».
Разный сайдбар, хедер, футер и не только
Внимательно посмотрев на установленную тему, увидите, что для вывода базовых элементов там применяются стандартные функции: get_sidebar, get_header, get_footer. Если вы модифицировали свой макет, но оставили их там, то на сайте будет отображаться такое же содержимое, что и в основном варианте.
Разберем самую простую ситуацию — у нас получился новый исправленный page.php, но в сайдбаре также требуется внести некоторые коррективы. В таком случае вместо get_sidebar я использую конструкцию:
<?php include(TEMPLATEPATH."/sidebar-category-noads.php"); ?> |
Разумеется, вам нужно создать соответствующий файл sidebar-category-noads.php. Хотя, теоретически, можно сразу в новом макете писать код без include, но так структура становится менее наглядной.
Понятно, что фишка применима не только к этим трем блокам на сайте, а и любым другим — внимательно изучайте исходники, которые используете в работе.
Отдельные шаблоны записей по категориям
Тут, по сути, имеется два способа. Я лично предпочитаю тот, что попроще — открываете единичный пост single.php в редакторе, и размещаете код:
<?php if(in_category(5)) { include(TEMPLATEPATH."/single-category5.php"); } else { include(TEMPLATEPATH."/single-forall.php"); } ?> |
Условный оператор in_category проверяет какому разделу принадлежит публикация: если с ID=5, то грузится single-category5.php, в противном случае — single-forall.php. Конечно, эти два файла следует добавить на FTP заранее (можно опять же скопировать из исходного и слегка подправить) + названия допускаются любые.
Второй вариант рассмотрен тут. Вам нужно разместить следующий код в functions.php:
/* * Define a constant path to our single template folder */ define(SINGLE_PATH, TEMPLATEPATH . '/single'); /** * Filter the single_template with our custom function */ add_filter('single_template', 'my_single_template'); /** * Single template function which will choose our template */ function my_single_template($single) { global $wp_query, $post; /** * Checks for single template by category * Check by category slug and ID */ foreach((array)get_the_category() as $cat) : if(file_exists(SINGLE_PATH . '/single-cat-' . $cat->slug . '.php')) return SINGLE_PATH . '/single-cat-' . $cat->slug . '.php'; elseif(file_exists(SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php')) return SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php'; endforeach; } |
После этого в директории темы создаете новую папку «single» по типу /wp-content/themes/ваша_тема/single/ куда загружаете файлы, название которых имеет следующий формат single-cat-{category-slug}.php, например: single-cat-news.php или single-cat-articles.php. Данный метод лично я не тестил, но источник надежный.
Дополнительные нюансы
Напоследок 2 небольших замечания. Иногда бывает, что в премиальной теме в админке нет выбора макета для постов (post), а вместо них разработчики внедрили форматы. В таком случае можно использовать для альтернативного вывода инфы один из них.
Метод, конечно, не самый грамотный, но работает. Не забудьте внести правки в соответствующий файл.
Вторая фишка — когда нужно скрыть/показывать виджет в зависимости от выбранного варианта макета. В таком случае на помощь приходит плагин Widget Logic и условные операторы is_page_template либо has_post_format.
Итого. Повторюсь, если требуется создать разные шаблоны страницам и постам в Вордпресс, но при этом сами page.php и single.php отличаются, то вы для каждого из них делаете свою «копию». Когда же их структура одинакова, новые возможности системы позволяют сделать всего один макет, где в описании Template Post Type просто указываете типы объектов, с которыми он будет работать.
Если есть вопросы по основной части заметки, и по доп.нюансам, пишите ниже, — постараюсь ответить.
комментариев 9 к статье “Создание разных шаблонов для страниц и WordPress записей”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Як сховати відсутні товари в Woocommerce шорткодах та схожих товарах
- Сервіс AdMaven + плагін для монетизації трафіка на WordPress сайтах
- Плагіни для створення стрічки новин з біжучим рядком в WordPress
- Як змінити розміщення кнопки оформлення замовлення в WooCommerce
- Плагін WHWS Display In Stock Products First – відображення товарів в наявності першими
- Підписка MonsterONE: чи варто використовувати цей сервіс у 2023 році? (+5 продуктів, які треба скачати в першу чергу)
- Онлайн генератор ссылок на мессенджеры для WordPress и не только
- WooCommerce (46)
- Безопасность (12)
- Видео (6)
- Виджеты (28)
- Возможности (141)
- Вопрос-ответ (6)
- Начинающим (52)
- Новости (46)
- Оптимизация (23)
- Плагины (246)
- Сервисы (87)
- Хаки и секреты (87)
- Шаблоны (45)
- Записи и посты wordpress, оформление записи (5,91 из 7, голосов - 47)
- Проблема с адаптивными изображениями в Gutenberg редакторе WordPress (3,87 из 7, голосов - 45)
- Умный копирайт в footer.php для wordpress (5,63 из 7, голосов - 30)
- Обновление плагинов и тем в WordPress: автоматическое, через FTP, скрытие уведомлений (5,19 из 7, голосов - 31)
- Polylang — плагин для мультиязычных сайтов на нескольких языках в WordPress (4,42 из 7, голосов - 31)
- Плагин TinyMCE Advanced – wordpress текстовый редактор (6,35 из 7, голосов - 20)
- Рубрики и категории wordpress, функция wp_list_categories (6,05 из 7, голосов - 20)
- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- Советы по выбору холодильника LG с технологией No Frost
- Зачем нужны Wi-Fi ретрансляторы и как выбрать подходящую модель
- Введение в онлайн-казино Slotor777: многообразие игр и привлекательные бонусы
- Необходимость использования облачного хранилища в наше время, что важно и как выгодно?
- Спрощення процесу звітності за допомогою програми BAS Бухгалтерія
- Технологія підключення інтернету GPON та її переваги
- За що гравці найбільше цінують Lineage 2
- Для каких проектов нужна аренда виртуального сервера и что такое VPS
Спасибо за детальную инструкцию, все понятно.
Недавно решал похожую задачу — условие в single все решило… хотя выбирать шаблон в админке нагляднее.
Создан новый рекламный шаблон для единичный постов и выбираю его когда нужно — действительно удобно.
Новичкам вроде меня такие детальные заметки — просто топ! Спасибо за труды)
Остаюсь на Joomla. Это в два клика через админку и многоязычность тож без бубнов.
Спасибо большое за статью!
Большое спасибо за статью )
И особенно за указание того, как сделать альтернативные сайдбары и прочие футеры для шаблона записи )
Как цикл сделать для вывода записей?
Иван, когда-то уже был пост про WordPress цикл (loop).