2015-03-05 3 views
1

У меня есть категория «Программа», и эта категория имеет дочерние элементы. (Например, программа -> Улучшение скорости)Просмотр пользовательского шаблона для конкретных категорий

Я хочу отобразить шаблон пользовательской категории для дочерних элементов категории программы.

Я обнаружил, что: WordPress имеет функцию template_include, которая выполняется непосредственно перед тем, как WordPress содержит предопределенный файл шаблона. Это можно использовать для переопределения поведения шаблона WordPress по умолчанию.

Так что я пытаюсь использовать этот код в моем файле functions.php:

function wpse_template_check($template) { 
    if (is_category()) { 
     // Get category information 
     $cat = get_query_var('cat'); 
     // read the category parent 
     $parent_category = $cat->category_parent; 

     //I want to load this template 
     $new_template = locate_template(array('category-program.php')); 

     //Program category have ID=43 so I check here if parent category = program 
     if (($parent_category) == 43) { 
      return $new_template; 
     } 
    } 
    return $template; 
} 
add_filter('template_include', 'wpse_template_check'); 

Но это не сработало ...

ответ

0

EDIT

Проблема здесь в том, что get_query_var('cat') возвращает текущий идентификатор категории. Если у вас отладки включен, вы увидели бы следующее уведомление

NOTICE Error: [8] Trying to get property of non-object

Вы должны заменить get_query_var('cat') с get_queried_object(), который получит запрашиваемый объект объекта.

+0

К сожалению, все еще не работает. Кстати, я изменил этот код: http://wordpress.stackexchange.com/questions/173607/how-to-show-wordpress-parent-and-child-category-different-page/180247?noredirect=1 # comment263244_180247 И там Роберт использует locate_template с массивом, и его код работает. Поэтому я не думаю, что есть проблема с этой строкой кода. – marcinf2

+0

Это сработало! Большое спасибо Питеру! – marcinf2

+0

Мое удовольствие. Наслаждаться. :-) –

Смежные вопросы