yaleksandr89
@yaleksandr89
PHP developer

Как связать events и single-events (Иерархия шаблонов)?

Здравствуйте.
Вопрос в следующем – создал произвольный тип записи "События" (events.php), для каждого поста это категории сделал отдельный файл для вывода (event.php). Изначально для вывода одиночной записи events использовал:
/*
Template Name: Конкретное событие
Template Post Type: events
*/
И вручную выбирал при создание каждого события. Потом на wp-kama наткнулся на иерархию файлов темы и попытался её внедрить, то есть файл для вывода одиночно записи переименовал из event.php в single-events.php.

После чего решил убрать эти два файла в директорию calendar/, изначально они лежали в корне темы. Как я только перенес эти файлы, шаблон для вывода единичной записи перестал работать (по query monitor видно, что он стал подключать не single-events.php, а inedx.php), если эти файлы вернуть в корень темы - все работает нормально.

Что необходимо прописать, в файле single-events или events, что бы после перемещения в папку calendar/ все работало?
  • Вопрос задан
  • 30 просмотров
Решения вопроса 1
yaleksandr89
@yaleksandr89 Автор вопроса
PHP developer
Нашел решение, может кому-то ещё пригодиться. Мой метод будет работать только в одном случае иные варианты исключены (это касается привязки не только по слагу, но и по ID).

Решение: создать фильтр через "template_include"

Исходные данные: в папке /calendar/ лежат два файла:
  • events.php - выводит общий список постов произвольного типа записей events
  • event.php - выводит конкретное событие


add_filter('template_include', 'my_template');
function my_template($template)
{
global $post;
if( $post->post_type == 'events' ){
return get_stylesheet_directory() . '/calendar/event.php';
}
return $template;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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