2015-09-04 1 views
1

Существует большая общая категория Catalog ($category->cat_ID = 2). Он содержит несколько подкатегорий, таких как Series1, Series2 и так далее. Каждая подкатегория содержит несколько подкатегорий, таких как Type1, Type2 и т. Д. И каждая под-подкатегория содержит некоторые продукты (тип post).
Мне не нужно показывать общую категорию Catalog и ее подкатегории, но мне нужно показать под-подкатегорию с ее продуктами на отдельных страницах.
Как установить 404.php шаблон для категории Catalog и его подкатегории и пользовательские шаблоны для каждой подкатегории (со списком продуктов) и для каждого продукта?Wordpress с использованием пользовательского шаблона для подкатегорий и сообщений в пределах

Я нашел код ниже (functions.php файл)

function catalog_template() {  
// Get the category id from global query variables 
$cat = get_query_var('cat'); 

if(!empty($cat)) {  

    // Get the detailed category object 
    $category = get_category($cat); 

    // Check if it is sub-category and having a parent, also check if the template file exists 
    if(($category->parent != '0') && ($category->parent == '2') && (file_exists(TEMPLATEPATH . '/catalog.php'))) { 

     // Include the template for sub-catgeory 
     include(TEMPLATEPATH . '/catalog.php'); 
     exit; 
    } 
    return; 
} 
return; 

} 
add_action('template_redirect', 'catalog_template'); 

, но я не знаю, как настроить его для моих потребностей.

UPD. Я написал код, приведенный ниже

function catalog_template() {  
// Get the category id from global query variables 
$cat = get_query_var('cat'); 

if(!empty($cat)) {  
    $catalog_id = get_cat_ID('Catalog'); 

    $catalog_child_cats = array(); 

     foreach(get_all_category_ids() as $child_cat) 
     { 
      if(get_category($child_cat)->parent==$catalog_id) 
      { 
       $catalog_child_cats[]=$child_cat; 
      } 
     } 

    // Get the detailed category object 
    $category = get_category($cat); 
    $cat_parent_id = $category->cat_ID; 

    // Check if it is sub-category and having a parent, also check if the template file exists 
    if((in_array($cat_parent_id, $catalog_child_cats)) && (file_exists(TEMPLATEPATH . '/catalog.php'))) { 

     // Include the template for sub-sub-catgeory 
     include(TEMPLATEPATH . '/catalog.php'); 
     exit; 
    } 
    return; 
} 
return; 

} 
add_action('template_redirect', 'catalog_template'); 

но он использует catalog_template для sub-categories тоже. Как установить 404.php для общей категории Catalog и для ее подкатегорий?

UPD2 Я нашел ошибку в своем коде, он должен быть

// Get the detailed category object 
    $category = get_category($cat); 
    $cat_parent_id = $category->category_parent; 

ответ

0

Я рекомендую использовать 404, поскольку это подразумевает что-то другое, и конкретные; контент отсутствует или недоступен, а не контент - это ребенок этой таксономии.

НО, если вы хотите ..... Просто скопируйте код из 404.php и вложите его в условный оператор, который запрашивает уровень категории + 1 вниз. Что-то вроде этого:

если (is_category ('Каталог')) {$ this_category = get_queried_object(); если (0! = $ This_category-> Родитель) {// код из 404.php }}

+0

Я обновил свой вопрос, вы можете проверить, пожалуйста? – hronikata

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