Здравствуйте, мне нужно подключить некоторые категории (рубрики) в отдельные шаблоны.
Например у меня есть две категории с id 24 и 27 и я их хочу подключить в отдельные шаблонные файлы которые назвал features.php и portfolio.php пытаюсь подключить через function.php с помощью фильтра template_include, но почему-то не проходит проверка на тег-функцию is_category и не выполняется скрипт
if (is_category(['24']) || is_category(['27'])){
function my_template() {
if( is_category( 27 ) ){
return get_template_directory() . '/portfolio.php';
}
if( is_category( 24 ) ){
return get_template_directory() . '/features.php';
}
}
add_filter('template_include', 'my_template');
}
Но если убрать проверку if (is_category(['24']) || is_category(['27'])){
то в таком случае код срабатывает и подключаются нужные категории в нужных шаблонах, но при этом не работают остальные шаблоны сайта ни index.php
, ни category.php
, ни single.php
ни любой другой.
И что странно если убрать проверку if (is_category(['24']) || is_category(['27'])){
то код ниже отрабатывает и получается
if( is_category( 27 ) ){
return get_template_directory() . '/portfolio.php';
}
этот код срабатывает хотя здесь такая же проверка if( is_category( 27 ) )
... В чем ошибка?
Ошибка в том, что вы не учитываете процесс загрузки WordPress. Код functions.php исполняется задолго до формирования главного цикла WordPress, а именно тогда устанавливаются переменные, которые способны "правильно ответить на вопрос" is_category()
. Другими словами, во время выполнения вашего
if (is_category(['24']) || is_category(['27'])){
WordPress ни сном ни духом не в курсе, какие там категории существуют.
но при этом не работают остальные шаблоны сайта
Естественно, потому что вы гробите шаблон, возвращая из своей функции null. Читайте документацию.
В общем, надо так:
function my_template( $template ) {
if( is_category( 27 ) ){
return get_template_directory() . '/portfolio.php';
}
if( is_category( 24 ) ){
return get_template_directory() . '/features.php';
}
return $template;
}
add_filter('template_include', 'my_template');
которые назвал features.php и portfolio.php
Неправильно назвал. Нужно category-{slug}.php
или category-{id}.php
См https://codex.wordpress.org/%D0%98%D0%B5%D1%80%D0%B0%D1%80%D1%85%D0%B8%D1%8F_%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2#.D0.9E.D1.82.D0.BE.D0.B1.D1.80.D0.B0.D0.B6.D0.B5.D0.BD.D0.B8.D0.B5_.D1.80.D1.83.D0.B1.D1.80.D0.B8.D0.BA.D0.B8
И не нужно в коде никаких условий выбора рубрик.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть небольшой проект - сайт с объявлениями, где есть объявление и фотографии к немуЯ расскажу как сделал обработку и хранение фотографий,...
Помогите пожалуйста, есть скрипт и всё такое, он выводит новости из ДБ, мне надо что бы была возможность, добавлять в таблицу лайк, типо имеется...
Есть строкаЕсть массив, в котором записанно все вот так: "a" => "****",
Когда я посылаю в ссылке что то вроде href="topicphp?language=c++", на страницу topic