Отдельный шаблон для дочерней категории.

👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

Надо для всех дочерних категорий (подразделов) сделать один шаблон который будет отличатся от шаблона category.php.
Как вариант узнавать является ли категория дочерней и выдавать другой шаблон. Но как узнать является ли она дочерней?

Создай свой первый сайт на WordPress

dreamerov
Оцените автора
Добавить комментарий

  1. tiaurus

    Примерно так:

    <?php
    if ( is_category() ) {
    $parent = 8;
    $categories = get_categories('include='.get_query_var('cat'));
    if ( $categories[0]->category_parent == $parent ) {
    echo 'category ' . $categories[0]->name . 'это дочерняя рубрика категории ' . $parent;
    }
    }
    ?>
    

    Можно еще попробовать так:

    add_action('template_redirect', 'inherit_cat_template');
    
    function inherit_cat_template() {
    if (is_category()) {
    $catid = get_query_var('cat');
    $cat = &get_category($catid);
    $parent = $cat->category_parent;
    while ($parent){
    $cat = &get_category($parent);
    if ( file_exists(TEMPLATEPATH . '/category-' . $cat->slug . '-child.php') ) {
    include (TEMPLATEPATH . '/category-' . $cat->slug . '-child.php');
    exit;
    }
    $parent = $cat->category_parent;
    }
    }
    }
    

    и вместо $cat->slug использовать какой-нибудь одинаковый ярлык. Тогда шаблон для любой дочерней категории будет иметь название category-ЯРЛЫК-child.php.

    Ответить
  2. qazomardok

    Держи код. Можешь или плагин запилить или в functions.php засунуть))

    add_action('template_redirect', 'use_parent_category_template');
    function use_parent_category_template() {
    	global $cat, $post;
    	$category = get_category($cat);
    	
    if (is_category()): 
    	while ($category->cat_ID) {
            if ( file_exists(TEMPLATEPATH . "/category-" . $category->cat_ID . '.php') ) {
                include(TEMPLATEPATH . "/category-" . $category->cat_ID . '.php');
                exit;
            }
    		$category = get_category($category->category_parent);
        }
    	elseif (is_single()) :
    
        $categories = get_the_category($post->ID);
        
        if (count($categories)) foreach ( $categories as $category ) {
    		while ($category->cat_ID) {
        	    if ( file_exists(TEMPLATEPATH . "/single-" . $category->cat_ID . '.php') ) {
            	    include(TEMPLATEPATH . "/single-" . $category->cat_ID . '.php');
                	exit;
    	        }
        	    
    		$category = get_category($category->category_parent);
    	    }
        
        }
    
    	endif;
    }

    Потом заходишь в папку с темой, создаешь новый шаблон с названием, к примеру category-56.php, где «56»-это id родительской категории. Профит.
    Как бонус, можешь делать файлы типа single-56.php — тогда все посты в категории с id равным 56 будут иметь этот шаблон.
    Не помню, чей плагин взят за основу, но переписан мной лично.

    Ответить