post_class() — выводит список CSS-классов для поста

Функция post_class() выводит HTML-атрибут class="" с содержащимися в нем классами, которые WordPress присваивает для постов. В итоге для каждого поста получаем уникальный набор классов CSS. Если вам нужно не вывести классы, а записать в переменную, то обратите внимание на get_post_class().

Я уже рассматривал функцию body_class(), которую нужно было добавлять в тег <body>. Функцию же post_class() мы вставляем в тег <div>, в который заключен пост (или его анонс), примерно вот так <div <?php post_class() ?>>.

Полученные классы перед выводом в атрибуте также будут пропущены через очистку esc_attr().

Если в функцию не передавать второй параметр, то она срабатывает для текущего поста в цикле WordPress, про циклы смотрите мой видеоурок.

post_class( $class = '', $post_id = null )

Параметры

$class
(строка|массив) класс или классы CSS, которые вы хотите добавить к общему списку выводимых классов.
$post_id
(целое число|WP_Post) ID или объект поста (по умолчанию — текущий из цикла).

Список присваиваемых классов

Специально для вашего удобства составил таблицу добавляемых классов.

УсловиеДобавляемые классы
Одинаковые для всех постовpost-{ID поста}type-{тип поста}status-{статус поста}hentry, а также классы, указанные в параметре функции $class.
!is_admin(){тип поста}
Если данным типом поста поддерживаются форматыformat-{название формата} либо format-standart, если формат данной записи не установлен.
Если пост запароленpost-password-required и post-password-protected, если пароль записи задан
Если пост не запаролен, не является вложением и имеет установленную миниатюруhas-post-thumbnail
Если прилепленный пост, условие is_sticky()Если выполняются два следующих условия is_home() и !is_paged() — sticky,иначе если выполняется is_admin() — status-sticky.
Если пост находится в одной или нескольких категорияхcategory-{ярлык категории} (либо category-{ID категории}, если при очистке функцией sanitize_html_class() ярлык категории превратился в пустую строку)
Если посту присвоены меткиtag-{ярлык метки} (либо tag-{ID метки})
Если пост принадлежит к таксономии{таксономия}-{ярлык термина} (либо {таксономия}-{ID термина})

Примеры использования post_class()

Простой пример использования функции в цикле

Для того, чтобы вывести ID поста, воспользуемся функцией the_ID().

<div id="post-<?php the_ID() ?>" <?php post_class() ?>>

Для записи с ID=5855 результат будет следующий:

<div id="post-5855" class="post-5855 post type-post status-publish format-standard hentry category-vse-podryad">

Окей, что можно сказать о нашем посту, глядя на этот HTML код?

  • post type-post — это запись (тип поста post).
  • status-publish — запись опубликована.
  • format-standard — тема поддерживает форматы постов, при этом у рассматриваемого поста формат не присвоен.
  • category-vse-podryad — запись находится в категории с ярлыком «vse-podryad».

Добавление собственных классов CSS

Предположим, что вы натягиваете вёрстку на WordPress и у нашего блока <div> уже есть атрибут class, при этом вы решили, что будете использовать функцию post_class(). Как всё это можно сочетать?

Например нам нужно так:

<div class="myclass1 myclass2"></div>

Тогда мы делаем так:

<div <?php post_class( array( 'myclass1', 'myclass2' ) ) ?>></div>

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

Комментарии — 4

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.