Артём Мáлков

Задаем свой шаблон category для родительской и дочерних рубрик в WordPress

19 окт4 комм

Делал я один сайт, в котором было несколько рубрик (около 20), и у каждой рубрики было еще несколько дочерних рубрик. Все бы ни чего, но у одной из главных рубрик было порядка 100 дочерних элементов, а задача стояла в том, чтобы как раз эту главную рубрику с ее дочерними разделами выделить своим уникальным дизайном.

Что приходит на ум? Использовать стандартный шаблон category.php и в нем перечислить все нужные нам рубрики, у которых мы хотим сменить оформление.

В целом решение неплохое, когда рубрик 5–10, но не когда их 100 и более.

Чтобы более красиво решить эту задачу, рекомендую вам воспользоваться следующим хаком.

Откройте файл functions.php в папке вашей темы и в самый низ вставьте:

function custom_template($template) {

	$main_cat_id = 30;
	
	if(cat_is_ancestor_of($main_cat_id, get_query_var('cat')) || is_category($main_cat_id)) {
	
		$new_template = locate_template(array('category-new.php'));
		
		return $new_template;
		
	}
	
	return $template;
	
}

add_filter('template_include', 'custom_template');

Сохраните и отправьте файл обратно на сайт.

Здесь «30» – это ID главной рубрики, а «category-new.php» – название файла шаблона (должен лежать в корне вашей темы). Таким образом, к рубрике с ID, равным 30, и ко всем ее дочерним элементам будет привязан указанный файл шаблона.

Если вы хотите изменить шаблон только для дочерних рубрик, исключая главную, то из кода выше удалите:

 or is_category($main_cat_id)

Удачных вам разработок!

Рекомендуем к просмотру
Как исключить вывод постов из определенных рубрик на главной странице в WordPress?
Хаки
Удаляем префикс category из URL рубрик в WordPress без плагина
Хаки
Вывод записей из нужных рубрик в WordPress
Статьи и советы
4
комментария
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 1
    1
      •  Пользователь
    2 июн в 17:50

    Подскажите, пожалуйста, как вывести шаблон только для родителя, не затрагивая при этом дочерние рубрики?

      • 1
      1066
        •  Команда Pandoge
      изменено 3 июн в 09:38

      Алина Иванова, здравствуйте!

      Попробуйте строку:

      if(cat_is_ancestor_of($main_cat_id, get_query_var('cat')) || is_category($main_cat_id)) {

      заменить на:

      if(is_category($main_cat_id)) {
    • 2
    766
      •  Гости
    8 ноя в 01:57

    Здравствуйте, я начинающий вебмастер, искал в инете именно этот способ вывода отдельного шаблона для рубрик, Вы меня очень выручили, одну рубрику я вывел, большое спасибо. Но мне надо вывести несколько. В файле functions.php пробовал подключить еще один шаблон так же как первый, но что то я сделал неправильно, пропадает сайт. Очень прошу помочь, может подскажете как подключить несколько шаблонов таким же образом, заранее благодарю.

      • 1
      1066
        •  Команда Pandoge
      8 ноя в 02:38

      Владимир Муратов, попробуйте так:

      function custom_template($template) {
      
      	$main_cat_id_1 = 30; // ID 1 категории
      	$main_cat_id_2 = 40; // ID 2 категории
      	
      	if(cat_is_ancestor_of($main_cat_id_1, get_query_var('cat')) or is_category($main_cat_id_1)) {
      	
      		$new_template = locate_template(array('category-new-1.php'));
      		
      		return $new_template;
      		
      	}
      	
      	
      	if(cat_is_ancestor_of($main_cat_id_2, get_query_var('cat')) or is_category($main_cat_id_2)) {
      	
      		$new_template = locate_template(array('category-new-2.php'));
      		
      		return $new_template;
      		
      	}
      	
      	return $template;
      	
      }
      
      add_filter('template_include', 'custom_template');
Подняться наверх
«Pandoge» - помощник вебмастера