WordPress шаблон записи: как изменить single.php для постов из разных категорий

Индивидуальный шаблон single.php для разных категорийПривет посетителям блога. Сегодня речь о создании отдельного, индивидуального шаблона записи single.php для постов из разных категорий WordPress.

Зачем это надо? Содержание блога может быть разнородным: это рецепты, статьи, видео, фото. Для разного контента удобно иметь отдельные шаблоны, поскольку требования по микроразметке статей и рецептов, к примеру, разные.

Отдельный шаблон для записи

В моем кулинарном блоге wordpress наряду с рецептами публикуются статьи о технике для кухни.

Для разметки страничек постов я использовала один шаблон для всех записей и микроразметку schema.org/Recipe. Из-за этого поисковики все время выдавали ошибку.

При проверке микроразметки постов из категории с описаниями техники для кухни они не находили нужных полей recipeingredient и recipeinstructions. А у Гугла еще больше претензий, ему нужны поля cookTime, recipeCategory и прочие.

Пришлось искать решение, чтобы выводить в wordpress отдельные шаблоны single.php для записей из разных категорий.

Индивидуальные шаблоны для записей wordpress

Способ реализовать в wordpress отдельный шаблон для записей конкретной категории как всегда нашла в сети.

Проще объясню так:

iconsесли запись находится в категории 'texnika-dlya-kuxni', используем шаблон single-texnika.php (с микроразметкой schema.org/Article);

iconsдля записей в других категория берем вот шаблон single-default.php (с микроразметкой schema.org/Recipe).

ПРИМЕРЫ использования кода (размещаем в файле single.php):

<?php $post = $wp_query->post; 
if (in_category('texnika-dlya-kuxni')) 
{include(TEMPLATEPATH.'/single-texnika.php');}
else {include(TEMPLATEPATH.'/single-default.php');} ?>

Категорий (условий) может быть несколько, как и используемых шаблонов.

<?php   $post = $wp_query->post;  
if (in_category('texnika-dlya-kuxni')) 
{include(TEMPLATEPATH.'/single-texnika.php');}
else if (in_category('prisposobleniya'))
{include(TEMPLATEPATH.'/single-texnika.php');}
else if (in_category('podukty')) 
{include(TEMPLATEPATH.'/single-texnika.php');}
else {include(TEMPLATEPATH.'/single-default.php');}?>

В этом коде используется оператор ELSEIF для последовательной проверки вариантов условий.

По написанию применяют как ELSEIF, так и ELSE IF.

Выражения равнозначны (при условии использования фигурных скобок), и ведут к одному результату.

WordPress отдельный шаблон для записи, как сделать?

Работать будем с файлами темы Вордпресс. wordpress отдельные шаблоны single.php для разных постов

СОЗДАЙТЕ КОПИЮ single.php в файловом менеджере на хостинге, переименуйте ее (у меня single-texnika.php). В этот файл внесите необходимые изменения. В моем случае – это изменение микроразметки. Но может быть иной дизайн страницы записей, отсутствие/наличие рекламы. wordpress отдельный шаблон для записи
СОЗДАЙТЕ ВТОРУЮ КОПИЮ single.php в файловом менеджере, назовите ее single-default.php. Ее вордпресс будет использовать по умолчанию для всех записей не из рубрики texnika-dlya-kuxni. разные шаблоны для записей wordpress
Измените файл single.php, вставьте вышеприведенный код (первый или второй). Файлы, естественно, называйте по своему.  разные шаблоны для категорий записей wordpress

Последние версии wordpress подсвечивают код. В данном случае зеленым подсвечены наименования рубрик и шаблонов. Все правильно.

Если ваш КОД ОСТАЛСЯ ЧЕРНЫМ, ищите ошибку. Она проявляется даже из-за использования неправильных кавычек или скобок.

Как выглядят эти файлы в Консоли в редакторе, вы видите на самой первой картинке.

Можете работать с файлами через FTP клиент FILEZILLA. Как это делается, читайте здесь.

бесплатная школа блогеров

Заключение

WordPress отдельный шаблон для записи из различных рубрик создан. Будем ждать реакции поисковиков. Помимо микроразметки в шаблонах записей разных категорий можно вставить разные коды рекламы Адсенс, разнообразные баннеры, сделать заголовки разного цвета. Вариантов применения можно найти массу.

Если статья полезна, пишите в комментариях.

Понравилась статья? Поделиться с друзьями:
Я новичок
Комментариев: 6
  1. Spotman

    Интересное решение. Пытался на своем сайте сделать нечто подобное, не получилось. Выполнялось только одно условие.

    1. Ольга (автор)

      У меня тоже получилось не сразу. А дело было в неправильных кавычках. Скопировала правильные кавычки, и все получилось.

  2. Леон

    Круто, всегда хотел убрать с гостевых статей лишнюю рекламу. Теперь понял, как это сделать. Надо разделить потоки, сделать для статей разных категорий разные шаблоны и направлять с помощью оператора условия ELSEIF.

    1. Ольга (автор)

      Да, правильно поняли, так и есть.

  3. Vlad

    Нашел проще вариант.
    Такой код:
    add_filter(‘single_template’, ‘my_single_template’);

    function my_single_template($single) {
    global $wp_query, $post;
    foreach((array)get_the_category() as $cat) {
    if(file_exists(get_template_directory() . ‘/single-‘ . $cat->slug . ‘.php’)) {
    return get_template_directory() . ‘/single-‘ . $cat->slug . ‘.php’;
    } elseif(file_exists(‘/single-‘ . $cat->term_id . ‘.php’)) {
    return get_template_directory() . ‘/single-‘ . $cat->term_id . ‘.php’;
    }
    }
    return $single;
    }
    добавьте в ваш functions.php

    1. Ольга (автор)

      Надо пробовать, может кому-то и пригодится этот вариант.

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: