WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Отдельный шаблон single.php для записей (post), но прикрепленных к другой таксономии

На сайте есть таксономия, ко всем рубрикам которой я хочу применить свой single.php?

Помогите! Как это можно реализовать?

Нашел в интернете такой вариант, но как его сделать под свою taxonomy? Спасибо.

<?php
$post = $wp_query->post;
if ( in_category('3') ) {
 include(TEMPLATEPATH . '/single2.php');
} else {
 include(TEMPLATEPATH . '/single1.php');
}
?>
Заметки к вопросу:
Kama 7.1 год назад

Вот подход который вам поможет - третий вариант

Для условия юзай in_category('3') должно сработать...

Ferzet 7.1 год назад

Выходит так?

<?php
add_filter('template_include', 'my_template');
function my_template( $template ) {
	if( is_tax('tests') ){
		return get_stylesheet_directory() . '/single2.php';
	}
	return $template;
}
?>
Kama 7.1 год назад

Не понял что нужно, создать шаблон для записей из определенной рубрики или для элементов таксономии (которые содержат записи)...

Ferzet 7.1 год назад

У меня создана taxonomy с названием tests, в которой есть 9 элементов=9 рубрик, а в этих рубриках записи, которые я хочу выводить другим шаблоном single.php

Kama 7.1 год назад

Если тип записи отличается, то все просто очень, создаешь файл single-{myposttype}.php в корне темы, готово!

Если тип записи post (базовые записи), то нужно хакать. Код выше должен работать...

Ferzet 7.1 год назад

В этом вся сложность... Что типа записи не создавалось. Таксономия привязана к обычному - post. Код срабатывает, но не так как мне нужно. Он меняет шаблон taxonomy-{slug}.php на single2.php, а не шаблон записи - single.php.

<?php
add_filter('template_include', 'my_template');
function my_template( $template ) {
	if( is_tax('tests') ){
		return get_stylesheet_directory() . '/single2.php';
	}
	return $template;
}
?>
Kama 6 лет назад

Тебе в условие нужно добавить проверку если мы на странице записи и запись прикреплена к элементу таксономии tests.

add_filter('template_include', 'my_template');
function my_template( $template ) {
	global $post;

	if( is_single() && get_the_terms( $post, 'tests') ){
		return get_stylesheet_directory() . '/single2.php';
	}
	return $template;
}
0
Ferzet
7.1 год назад 3
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация