Меню

Как настроить шаблон страницы wordpress

Создание разных шаблонов для страниц и WordPress записей

Подобная задача может возникнуть, когда вам в пределах одного сайта нужно иметь разные шаблоны страниц в плане оформления. Самая простая ситуация, что приходит на ум: скрытие рекламы/баннеров в избранных статьях; либо вдруг захотите удалить в некоторых публикациях списки похожих заметок или, допустим, какие-то элементы сайдбара. Сегодня научу вас это делать.

К данному вопросу возвращаюсь уже не первый раз, захотел собрать все нюансы и знания в одном месте. К счастью, современные методы по сравнению с прошлыми модификациями, максимально просты. Вам даже не надо ставить дополнительные модули, как раньше. Разработчики WordPress действительно упрощают и улучшают систему.

Итак, сегодня рассмотрим:

Разные шаблоны страниц / записей в WordPress

Теоретически все, что вам нужно в этом случае — размещение некого кода в самом верху соответствующего файла:

В первой строке указывается название для 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 я использую конструкцию:

Разумеется, вам нужно создать соответствующий файл sidebar-category-noads.php. Хотя, теоретически, можно сразу в новом макете писать код без include, но так структура становится менее наглядной.

Понятно, что фишка применима не только к этим трем блокам на сайте, а и любым другим — внимательно изучайте исходники, которые используете в работе.

Отдельные шаблоны записей по категориям

Тут, по сути, имеется два способа. Я лично предпочитаю тот, что попроще — открываете единичный пост single.php в редакторе, и размещаете код:

Условный оператор in_category проверяет какому разделу принадлежит публикация: если с то грузится 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-.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 просто указываете типы объектов, с которыми он будет работать.

Если есть вопросы по основной части заметки, и по доп.нюансам, пишите ниже, — постараюсь ответить.

Источник

3 способа создать шаблон страницы

В этой статье я расскажу о способах создания шаблонов для постоянных страниц WordPress. Каждый способ несет в себе плюсы и минусы. Но прежде чем начать, коротко о том, что такое страницы и чем они отличаются от записей.

В WordPress можно создавать страницы (page) и записи (post). Отличаются они тем, что записи: попадают в ленту на главной странице; для записей указываются категории; записи не могут быть древовидными, а страницы: используются для такого содержимого как «Обо мне», «Контакты», «Карта сайта»; не имеют категорий, а имеют древовидную структуру. Записи обычно предназначены для хронологической информации (по времени добавления), а страницы для древовидной структуры не зависимой от времени. Для примера, эта статья опубликована как «запись» в рубрике «Кодекс», а ссылки в меню шапки ведут на страницы: Функции.

Страницы похожи на записи — они расположены в одной таблице базы данных и данные у них почти одинаковы: заголовок, текст, дополнительные поля и т.д. И то и другое — это записи, но разных типов: страницы древовидные и организуются путем создания родительских и дочерних страниц, а записи объединяются рубриками и метками. В WordPress можно создавать дополнительные типы записей древовидные или нет.

Создание страниц в WordPress

Часто нужно создать отдельный шаблон страницы, чтобы вывод информации отличался от остальных страниц. Создавая шаблон страницы в WordPress, можно совершенно изменить страницу: удалить сайдбар, подвал, шапку, можно изменить страницу до неузнаваемости. Например, на этом сайте так изменяется страница на которой выводятся коды файлов WordPress.

Способ 1: шаблон страницы через файл с произвольным названием (классический способ)

Это самый распространенный способ создать шаблон страницы в WordPress. Для этого нужно создать .php файл, например, tpl_my-page.php в папке темы и в самом начале файла вписать метку, что созданный файл является шаблоном для страниц:

Теперь при создании страницы в админ-панели в блоке «Свойства страницы» мы сможем выбрать «шаблон»:

С версии WordPress 4.7. такие шаблоны страниц можно создать для любого типа записи, а не только для page. Для этого дополните комментарии строкой: Template Post Type: post, page , где post, page — это названия типов записей к которым относится шаблон.

Преимущества:

Создав один шаблон, мы можем удобно применять его для разных страниц. Например, можно создать шаблон без боковой панели и использовать его на разных страницах.

  • Можно получить только записи с указанным шаблоном. Например, можно вывести все страницы с шаблоном «Услуги» (файл servises.php). Иногда это удобно. Название файла шаблона хранится в метаполе _wp_page_template , поэтому чтобы вывести страницы с указанным шаблоном нужно создать запрос по метаполю (см. WP_Query).
  • Недостатки:

    После создания файла шаблона в папке темы, нужно зайти в админ-панель и установить шаблон для страницы. При разработке это не всегда удобно. Поэтому если подразумевается использовать шаблон только для одной страницы, используйте второй метод.

    Как это работает:

    Когда вы заходите в админ-панель на страницу редактирования записи древовидного типа, WordPress просматривает все файлы шаблона на наличие в них строки:

    Строка может располагаться где угодно и как угодно в файле.

    Все файлы с подобными строками собираются и выводятся в выбор шаблона в блок «Атрибуты страницы».

    При публикации страницы, в произвольное поле _wp_page_template записывается название файла шаблона или default , если шаблон не указан:

    _wp_page_template = default
    _wp_page_template = tpl_my-page.php

    Далее, когда пользователь посещает страницу, WordPress проверят метаполе _wp_page_template , если шаблон установлен, то используется файл шаблона. В противном случае поиск шаблона страницы продолжается по иерархии.

    Локализация названия шаблона

    Название задается в php комментариях, поэтому нет возможности перевести эту строку обычным способом: через функцию перевода, заключенного в теги . Однако WP сам пытается перевести эту строку при выводе, используя подгруженные данные перевода. Таким образом, для перевода нам нужно как угодно добавить эту строку в список переводов темы. Сделать это удобнее всего сразу после заголовка — так всем будет понятно зачем нужен такой странный вызов функции переводов __() :

    Читайте также:  Как настроить иптв приставки

    my-theme — это ID перевода — параметр Text Domain: , который указывается в заголовках темы и при подключении файла перевода, см. load_theme_textdomain().

    Способ 2: шаблон страницы через файл с конкретным названием (иерархия файлов шаблона)

    Этот способ подразумевает создание файла в папке темы с конкретным названием: page-<слаг-страницы>.php или page-.php . Подробнее смотрите по этой ссылке.

    При создании страницы ей устанавливается ярлык (слаг, альтернативное название). Он используется в УРЛ страницы. И его можно изменить:

    Изменение слага страницы

    Для создание шаблона этим способом, вам нужно узнать слаг страницы и создать файл в папке темы. Допустим, наш слаг как на картинке равен contacts , тогда создадим в теме файл page-contacts.php . и заполним его нужным кодом (можно скопировать содержимое из файла шаблона page.php и отредактировать под себя). Все, теперь при посещении страницы мы должны увидеть новый шаблон. Аналогично можно взять ID (пусть 12) страницы и создать файл page-12.php .

    Достоинства:

    Нет необходимости заходить в админ-панель и устанавливать файл шаблона. Шаблон начинает работать сразу после создания файла. Удобно при разработке.

    Недостатки:

    Шаблон создается только для одной, конкретной страницы. Зависит от слага страницы, если он изменится шаблон работать не будет. Если использовать ID, то зависимость от слага пропадает, но становится непонятно в файла темы, к какой странице относится шаблон (если несколько шаблонов с ID).

    Практически бесполезен при написании шаблонов, а тем-более плагинов. Его можно использовать, когда правишь свой сайт, в котором слаг или ID страницы известны заранее.

    Как это работает:

    WordPeress подбирает какой файл использовать в следующем порядке (файлы должны быть в корне темы):

    Способ 3: шаблон страницы через фильтр «template_include» (коддинг)

    Это продвинутый способ, он более сложный, но вместе со сложностью он открывает широкие возможности. С помощью этого способа можно задать шаблон любой странице, записи, категории, любой публикации на сайте или вообще группе любых публикаций.

    Рассмотрим на примере:

    Такой код нужно разместить в файл темы functions.php , в плагин, или подключить как-то еще.

    Как видно из примера во время фильтра template_include уже работают условные теги, установлены глобальные переменные: $wp_query , $post .

    Достоинства:

    Можно установить шаблон для любой страницы или группы страниц. Практически полный карт-бланш в действиях.

  • Можно создать шаблон при написании плагина.
  • Источник

    

    Шаблоны страниц и типов записей

    Страницы — это один из типов постов WordPress. По умолчанию все страницы выглядят одинаково, но средствами WordPress вы можете сделать страницы вашего сайта уникальными. Например создать страницу с картой, создать HTML-карту сайта, страницу с формой, лендинги и т.д. Всё это можно реализовать при помощи шаблонов страниц.

    Кроме того, с версии WordPress 4.7 шаблоны поддерживаются всеми типами записей!

    Установка шаблона для страницы

    Если вы используете не свою собственную тему, а одну из стандартных тем WordPress или установленную из интернета, то вполне возможно, что эта тема имеет несколько уже готовых шаблонов страниц.

    Для того, чтобы это проверить:

    1. Переходим в Страницы > Добавить новую.
    2. В метабоксе «Атрибуты страницы» выбираем один из шаблонов.

    Либо, если у вас используется редактор Gutenberg, то опцию выбора шаблона вы сможете найти в настройках на вкладке «Страница» справа:

    Если ваша тема не имеет ни одного шаблона страниц, то выпадающий список шаблонов просто будет отсутствовать.

    Опции быстрого (Свойства, Quick Edit) и массового (Bulk Edit) редактирования также имеют возможность задавать шаблоны для страниц.

    Нужно нажать ссылку «Свойства»

    Также важно отметить, что один шаблон может использоваться для нескольких страниц одновременно.

    Создание шаблона страницы

    Для того, чтобы добавить шаблон страницы WordPress, нужно сделать два шага:

    1. В папке с темой создать какой-нибудь файл, так, чтобы его название не перекликалось с условными названиями файлов темы WordPress. Если не уверены, то придумайте такое название, которое кроме вас больше никому не прийдет в голову 🙂 например misha123.php .Файл шаблона также может располагаться в папке с родительской темой, папке с дочерней темой и, начиная с версии WP 3.4, в директории темы вы можете создать любую подпапку для шаблонов страниц.
    2. В начале вашего файла нужно обязательно указать название шаблона — после этого WordPress его «увидит»:
    Читайте также:  Как настроить эдо в 1с бухгалтерия

    Далее в шаблоне вы можете использовать абсолютно любой код, не хотите подключать get_header() и get_footer() сайта? — да пожалуйста, можете вообще просто один туда засунуть и будет норм.

    Имейте ввиду, что если тему, которая стоит на вашем сайте, разрабатывали не вы, то после её обновления все ваши созданные шаблоны страниц могут исчезнут (сам не проверял, но официальная документация говорит, что да). Поэтому, для таких целей рекомендуется создавать дочерние темы, а уже в них — шаблоны страниц.

    Иерархия и порядок подключения файлов страниц

    Список ниже показывает приоритет задействования PHP-шаблонов файлов темы для отображения типа записей «Страницы».

    1. custom-template.php (если файл шаблона существует и выставлен для данной страницы в её настройках)
    2. page-<ярлык страницы>.php (если существует)
    3. page-.php (если существует)
    4. page.php (наиболее распространённое решение практически во всех темах)
    5. singular.php (если page.php не существует)
    6. index.php (используется, если все вышеперечисленные файлы отсутствуют в папке с темой)

    Хотите лучше разбираться в иерархии шаблонов WordPress? – Рекомендую видеоурок.

    Шаблоны страниц для записей произвольного типа

    Шаблоны для постов любого типа появились в версии WordPress 4.7. Мне нравится, как плавно и постепенно WordPress расширяет возможности, внедряя только то, что действительно необходимо 😊 🎉

    Шаблон для типов постов (записи тоже сюда относятся) создаётся точно так же, как и для страниц, только помимо параметра Template name: , нам ещё на следующей строке нужно указать параметр Template post type: , в котором можно указать название типа поста, или несколько названий через запятую, например я захочу использовать свой шаблон и для записей и для страниц, в этом случае он будет начинаться так:

    Если у вас уже был какой-то шаблон для страниц и он уже использовался на сайте, то, после того, как вы добавите туда параметр Template post type: и укажите какой-то другой тип записей там, то уже существующие страницы, использующий этот шаблон не перестанут работать, однако при редактировании там уже будет указан Базовый шаблон.

    А для соответствующего типа записи сразу появится возможность выбора шаблона в «Свойствах записи»:

    В меню быстрого редактирования он тоже появится.

    Определение используемого шаблона на странице

    Окей, допустим вы используете шаблоны страниц и вам в вёрстке или в PHP-коде нужно сделать что-то особенное для этого шаблона. Как будем это делать?

    Классы тега

    Прежде всего давайте обратим внимание на функцию body_class(), которую я рекомендую использовать при разработке ваших тем. Да, по этой функции любой быстро определит, что сайт на WordPress, ну и что с того?

    Зато эта функция очень удобна, в атрибуте class тега она выведет:

    • тип текущего поста, например page ,
    • ID текущего поста, например page-id- ,
    • page-template , если используется произвольный шаблон страницы,
    • и… сам используемый шаблон страницы! Если же никакой шаблон не используется (ну я имею используются либо page.php , либо page-.php , либо page- <ярлык>.php, то будет добавлен класс page-template-default .

    Давайте разберёмся, как формируется название класса тега для произвольного шаблона страниц. Предположим мы создали шаблон digital-agency.php и поместили его в папку page-templates в нашей теме, ну типо как page-templates/digital-agency.php . В отдельную директорию шаблон помещать не обязательно, кроме того, это стало возможно начиная с версии WordPress 3.4.

    В итоге в классы будут добавлены:

    • page-template – то, что используется произвольный шаблон страницы,
    • page-template-page-templates – page-template- <папка шаблона>,
    • page-template-digital-agency – page-template- <название файла>,
    • page-template-page-templatesdigital-agency-php – название файла шаблона с расширением и с названием папки, в которой он находится.

    Условный тег is_page_template()

    Если же мы хотим проверить, используется ли определённый шаблон страницы внутри кода PHP, например у нас общий для всех страниц header.php , то рекомендую использовать функцию is_page_template().

    Для нашего примера условие будет выглядеть следующим образом:

    Хотите лучше разбираться в шаблонах WordPress? Попробуйте пройти мой видеокурс по созданию шаблона (темы) на основе готовой HTML-вёрстки.

    Недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

    Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

    Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

    Источник