WordPress. Вывод материалов с пометками "важное", "видео", "фото".

| 4 |

Часто на новостных (и не только) сайтах можно заметить в ленте разнообразные пометки возле заголовков, типа "Breaking", "Эксклюзив" или значки фото либо видео. Как можно организовать вывод материалов с пометками "важное", "видео", "фото" на сайте WordPress?

Не буду детально описывать процесс для новичков - ожидается, что определённый багаж знаний по WordPress у вас уже имеется. Так же будет плюсом наличие на сайте подключенного шрифта FontAwesome, но это уже, как говорится, для красоты.

Для начала в файле functions.php необходим добавить такой код:

Это минимум кода, необходимого нам. На самом деле там можно много чего указывать в этой функции.

После этой нехитрой манипуляции в разделе меню админки "Записи" появится новый пункт с пользовательской таксономией под названием "Вид материала". Давайте добавим в неё несколько пометок для новостей:

  • молния
  • эксклюзив
  • фото
  • видео
  • важное

Следующим этапом будет добавление к нужной новости нашей пометкой. Просто откройте готовую новость либо создайте новую запись и где-то справа вы сможете увидеть блок выбора под названием "Вид материала". Поставьте галочку как в случае с рубриками и за новостью будет закреплён наш новый вид.

Теперь нам осталось только добавить выбранный вид материала в ленту новостей перед или после заголовка. Тут уже дело вкуса. Рассмотрим три варианта вывода заголовка новости в ленте для новостей с видом материала "Важное".

  1. Жирный шрифт/цветной шрифт
  2. Иконка перед/после заголовка
  3. Слова после/перед заголовком

Для дальнейшей работы предусмотрено, что вы пользуетесь моей функцией для вывода новостной ленты, описанной в заметке "WordPress. Вывод материалов как на новостных сайтах".

1. Жирный шрифт/цветной шрифт.

Первый вариант самый простой. Нам нужно перед выводом заголовка новости проверить, выбран ли для этой новости наш пользовательский "Вид материала". Для этого после строки

дописать такое:

Осталось только в таблице стилей (например, это файл styles.css в вашем шаблоне) указать, какие стили мы присвоим классам:

Теперь ваша лента станет либо разноцветной в зависимости от количества "прикрученных" к новостям пометок, либо заголовки в ленте будут выделены жирным шрифтом. Получится что-то типа такого:

2. Иконка перед/после заголовка.

Если в вашей теме подключён шрифт с иконками FontAwesome, то сделаем следующие изменения в коде нашей функции:

Дальше в нашей функции ищем строки, отвечающие за вывод новостных заголовков:

и делаем такие превращения

Теперь наша лента будет иметь примерно такой вид:

Цвет иконок можно задать в таблице стилей примерно так:

3. Слова после/перед заголовком.

Здесь всё аналогично второму варианту, только вместо иконок мы выводим названия видов материалов.

Соответственно, при выводе списка новостей мы прикрепляем название вида материала в начало или конец пункта списка:

Вывод наших меток можно преобразить по своему вкусу. Например:

Тогда получится такое:

Итоги.

Таким нехитрым способом мы можем помечать нашу ленту новостей нужными "лейбами". Перечень использования такой таксономии довольно обширный: от пометки рекламных материалов, до пометки важных.

Поделитесь этим материалом в социальной сети:

, ,
Полезное
Типы записей:
  • - обычная
  • - изображение
  • - цитата
  • - статус
  • - ссылка

4 комментария

  1. Андрей says:
    09.12.2017 в 17:38

    Спасибо большое за такой нужный код. Жаль, у меня знаний не хватает, чтобы реализовать в полной мере. Если с отображением по тегам получилось, то тут никак :( Либо стиль сразу применяется ко всем новостям, либо вообще не применяется. (Пример 1). Можете на конкретном примере показать, что и куда? Например, вид материала exclusive, стиль breaking.

    • Стас Пономарёв says:
      09.12.2017 в 17:58

      Вообще предусмотрено, что стиль ставится по названию вида материала. То есть, если вид материала exclusive, то новость выведется с классом .exclusive. А вообще дайте ссылку, я посмотрю, скорее всего, где-то что-то упустили.

  2. Андрей says:
    12.12.2017 в 4:31

    Что касается кода, порядок тот же, что Вы навели в примере, но недостаточно знаний никак не позволяют реализовать. Или хотя бы понять принцип :( Вот и получается, что есть лишь вид материала exclusive, а вот где его прописать, чтоб получить результат… Попытки разобраться закончились провалом))

    $tag_ids = wp_get_post_tags( $theid, array( ‘fields’ => ‘ids’ ) ); // получаем ID всех тегов поста
    $class = ( !empty( $highlight ) && in_array( $highlight, $tag_ids ) ) ? ‘ class=”important”‘ : ” ;

    $terms = get_terms( ‘label’ );
    if( $terms && ! is_wp_error($terms) ){
    foreach( $terms as $term ){
    $styles .= ‘ exclusive ‘ . $term->slug . ‘ exclusive ‘;
    }
    }
    $class = ( strlen($class) > 0 ) ? mb_substr($class, 0, strlen($class)-1) . $styles . ‘”‘ : ‘ class=”‘ . $styles . ‘”‘; ?>

    • Стас Пономарёв says:
      12.12.2017 в 7:46

      Исправил ошибки в своём коде. В вашем необходимо поменять
      $styles .= ' exclusive ' . $term->slug . ' exclusive ';
      на
      $styles .= ' ' . $term->slug . ' ';

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *