Функция post_class() в WordPress добавляет HTML-атрибут class="" с классами, которые WordPress присваивает постам. Это позволяет каждому посту иметь уникальный набор CSS-классов. Если вам нужно не вывести классы, а получить их как массив, используйте функцию get_post_class().
Описание функции
Функция post_class() выводит строку CSS-классов для текущего поста. Она обычно используется в контейнере поста в шаблоне темы.
post_class( $class = '', $post_id = null )
Параметры:
- $class(строка или массив, необязательный): Один или несколько классов, которые нужно добавить к посту.
- $post_id(целое число или объект WP_Post, необязательный): ID или объект поста. По умолчанию используется ID текущего поста в цикле.
Возвращаемое значение:
- Функция выводит строку CSS-классов.
Примеры использования
Простой пример использования функции в цикле
Для того чтобы вывести ID поста, воспользуемся функцией the_ID().
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        ?>
        <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
            <h2><?php the_title(); ?></h2>
            <div class="entry-content">
                <?php the_content(); ?>
            </div>
        </div>
        <?php
    }
}
Для записи с ID=5855 результат будет следующий:
<div id="post-5855" class="post-5855 post type-post status-publish format-standard hentry category-vse-podryad">
Что можно сказать о нашем посте, глядя на этот HTML-код?
- post-5855— ID поста.
- post— тип поста.
- type-post— это запись (тип поста- post).
- status-publish— запись опубликована.
- format-standard— тема поддерживает форматы постов, при этом у рассматриваемого поста формат не присвоен.
- category-vse-podryad— запись находится в категории с ярлыком «vse-podryad».
Добавление собственных классов CSS
Если вы хотите добавить свои CSS-классы к блоку <div>, это можно сделать следующим образом:
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        ?>
        <div <?php post_class( array( 'myclass1', 'myclass2' ) ); ?>>
            <h2><?php the_title(); ?></h2>
            <div class="entry-content">
                <?php the_content(); ?>
            </div>
        </div>
        <?php
    }
}
В этом примере к посту будут добавлены пользовательские классы myclass1 и myclass2.
Список присваиваемых классов
Для удобства, ниже представлена информация о добавляемых классах в зависимости от условий:
- Общие для всех постов: post-{ID поста},type-{тип поста},status-{статус поста},hentry, и классы, указанные в параметре функции$class.
- Не админ-панель: {тип поста}
- Если пост поддерживает форматы: format-{название формата}илиformat-standard, если формат не установлен.
- Если пост запаролен: post-password-requiredиpost-password-protected, если задан пароль записи.
- Если пост не запаролен и имеет миниатюру: has-post-thumbnail
- Если это закрепленный пост: stickyна главной странице, иначеstatus-stickyв админке.
- Если пост в категории: category-{ярлык категории}илиcategory-{ID категории}, если ярлык пустой.
- Если посту присвоены метки: tag-{ярлык метки}илиtag-{ID метки}
- Если пост принадлежит к таксономии: {таксономия}-{ярлык термина}или{таксономия}-{ID термина}
Примеры использования post_class()
Простой пример использования функции в цикле
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        ?>
        <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
            <h2><?php the_title(); ?></h2>
            <div class="entry-content">
                <?php the_content(); ?>
            </div>
        </div>
        <?php
    }
}
Добавление собственных классов CSS
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        ?>
        <div <?php post_class( array( 'myclass1', 'myclass2' ) ); ?>>
            <h2><?php the_title(); ?></h2>
            <div class="entry-content">
                <?php the_content(); ?>
            </div>
        </div>
        <?php
    }
}
Использование фильтра post_class
function add_custom_post_class( $classes ) {
    if ( is_single() ) {
        $classes[] = 'single-post';
    }
    return $classes;
}
add_filter( 'post_class', 'add_custom_post_class' );
Зачем использовать post_class()?
- Автоматизация: post_class()автоматически добавляет классы, соответствующие формату поста, категориям и другим параметрам.
- Гибкость: Возможность добавления пользовательских классов позволяет адаптировать стилизацию под конкретные нужды.
- Удобство: Функция легко интегрируется в шаблоны и упрощает процесс стилизации постов.
Заключение по post_class
Функция post_class() в WordPress является мощным инструментом для добавления CSS-классов к постам. Её использование упрощает процесс стилизации и улучшает внешний вид вашего сайта.
