Узнать разрешение вашего экрана и IP адрес   •   Online-инструменты
751 просм
2 комм
Поделиться:

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

Делал я один сайт, в котором было несколько рубрик (около 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")) or 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)

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

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

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");
  • 0
Гостям запрещено учавствовать в обсуждениях сайта. Авторизуйтесь, чтобы иметь возможность оставить свое мнение о материале или задать вопрос.