Функция post_class() в WordPress: применение, производительность, примеры использования

POST_CLASS() │ WP 2.7.0

Функция post_class() отображает классы для блока с постом.

Использование: get_post_class()

Производительность:

  • 1 раз — 0.004188 сек (очень медленно)
  • 50000 раз — 10.89 сек (медленно)
  • PHP 7.0.2, WP 4.4.1

Хуки: отсутствуют.

Возвращаемое значение

Функция ничего не возвращает (null).

Применение

post_class( $css_class, $post );
  • $css_class (string|string[]): Один или несколько классов, которые нужно добавить к списку классов. По умолчанию: ''.
  • $post (int|WP_Post): ID поста или объект поста. По умолчанию: глобальный $post.

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

1. Простой пример

Применим функцию к HTML-контейнеру, содержащему данные поста:

>

В результате мы получим что-то вроде этого (предположим, пост находится в категории «танцы»):

Для этого примера в CSS нужно использовать следующие селекторы:

.post {
    /* стили для всех постов */
}
.post-4564 {
    /* стили только для поста с ID 4564 */
}
.category-dancing {
    /* стили для всех постов из категории танцы */
}

2. Добавление новых классов

Функция занимает атрибут "class", поэтому, если мы хотим добавить свой класс к тегу, нам нужно указать его как параметр функции:

>

В итоге мы получим:

3. Добавление классов через фильтр

Чтобы добавить названия всех категорий, к которым принадлежит пост, в качестве классов, можно использовать следующий код:

add_filter( 'post_class', 'category_id_class' );
add_filter( 'body_class', 'category_id_class' );

// Добавить имена категорий как классы к функциям body class и post class
function category_id_class( $classes ){
    global $post;

    foreach( get_the_category( $post->ID ) as $category ){
        $classes[] = $category->category_nicename;
    }

    return $classes;
}

4. Использование не по умолчанию

Если мы хотим получить классы конкретного поста, а не текущего, мы можем передать второй параметр, содержащий ID нужного поста:

>

5. Использование массива для добавления нескольких классов



>

6. Добавление нескольких классов в виде строки

Простой способ добавить несколько классов к списку классов по умолчанию — записать их через пробел:

>

Изменения

С версии 2.7.0 функция была введена.

Исходный код функции

Функция post_class() находится в файле wp-includes/post-template.php, и её код выглядит следующим образом:


function post_class( $css_class = '', $post = null ) {
// Разделяет классы одним пробелом, объединяет классы для блока поста.
echo 'class="' . esc_attr( implode( ' ', get_post_class( $css_class, $post ) ) ) . '"';
}

Связанные функции

  • body_class()
  • comment_class()
  • add_theme_support()
  • bloginfo()
  • И многие другие функции для работы с темами и постами в WordPress.

Эта информация поможет вам использовать функцию post_class() эффективно и правильно на вашем сайте WordPress.

Leave a Reply

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