Можно ли установить шаблон страницы при модификации глобального цикла, или каким образом Wordpress определяет, какой шаблон подключать?

Добрый день.
Суть в следующем: необходимо, чтобы при модификации глобального цикла (я делаю это в pre_get_posts) подтягивался кастомный шаблон. Пробовал использовать _wp_page_template, но это не работает. Однако же, pre_get_posts, насколько я знаю, вызывается до template_include \ template_redirect. Из этого вытекает предположение, что есть способ задать явно необходимый шаблон, или хотя бы повлиять на его определение.

Можно ли так сделать?..

Спасибо.
  • Вопрос задан
  • 227 просмотров
Решения вопроса 1
AndreyKaShops
@AndreyKaShops
4 года с WordPress
Ну при обработке pre_get_posts создавайте фильтр, который будет подключать нужный вам шаблон/файл(вешайте его на фильтр template_include).
События идут в следующем порядке:
parse_query
pre_get_posts
posts_selection
wp
template_redirect
template_include
get_header


Пример функции-обработчика фильтра template_include, давненько в плагине использовал:
/**
	 * Устанавливаем шаблон для нашей страницы
	 *
	 * @since 1.0
	 * @update 1.5
	 *
	 *
	 * @return
	 */
	public function template_include($template)
	{
		global $wp_query;
	
		if(
			$wp_query->query_vars['post_type'] == 'shops' && 
			$wp_query->query_vars['category_name'] &&
			$wp_query->query_vars['tag'] &&
			$ctgenerate = get_query_template('ct-template')
		)
			$template = $ctgenerate;
		
		return $template;
	}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы