Как включить шаблоны страниц?
Базовый вопрос, но я хочу включить шаблоны страниц. У меня есть одна тема, в которой шаблоны страниц включены. Я переключился на другую, но там нет опции для изменения шаблона, даже при создании новой страницы. Как включить эту опцию? Я уже просмотрел Codex и форум, но не смог найти ответ.
Вероятно, в новой теме, на которую вы переключились, не определены шаблоны страниц — они создаются отдельно для каждой темы.
Вот ссылка на Codex: https://wordpress.org/support/article/pages/

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

В 2022 году это сработало у меня. У меня нет такой же проблемы, как у автора вопроса. Я просто пытался понять, почему файл, который я создал в папке templates, не отображался как шаблон. Ответ подсказал мне, что WordPress не распознает его как шаблон без строки Template Name: ЧТО-ТО
в начале.

Есть ещё одна причина, по которой вы можете не видеть выпадающий список Page Template
в редакторе страницы. Если вы создаёте глобальный шаблон страницы (который может использоваться для любой страницы), убедитесь, что вы не называете файл шаблона с префиксом page-
, иначе WordPress интерпретирует это как специальный шаблон для использования на страницах, чьи ярлыки соответствуют остальной части имени.
Из документации шаблонов страниц:
Важно! Не используйте page- в качестве префикса, так как WordPress будет считать этот файл специализированным шаблоном, предназначенным только для одной страницы на вашем сайте.
И, наконец, убедитесь, что вы вставляете следующий комментарий в начале страницы:
/* Template Name: Name-of-your-template */

Добавьте поддержку шаблонов страниц в вашу тему, добавив эту функцию в файл functions.php:
function is_page_template( $template = '' ) {
// Получаем путь к шаблону текущей страницы
$page_template = get_page_template_slug( get_queried_object_id() );
// Если шаблон не указан, возвращаем true/false в зависимости от наличия шаблона
if ( empty( $template ) )
return (bool) $page_template;
// Проверяем соответствие указанного шаблона текущему
if ( $template == $page_template )
return true;
// Если передан массив шаблонов
if ( is_array( $template ) ) {
if ( ( in_array( 'default', $template, true ) && ! $page_template )
|| in_array( $page_template, $template, true )
) {
return true;
}
}
// Проверяем, является ли запрошенный шаблон шаблоном по умолчанию
return ( 'default' === $template && ! $page_template );
}
