get_post_class()
Получает css классы в виде массива, которые нужно использовать в записи для вывода в html теге .
Итоговый массив классов пропускается через фильтр post_class, используйте его, когда нужно изменить выводимые классы в зависимости от разных условий.
Чтобы сразу вывести классы на экран в виде строки, используйте post_class()
Где и какие классы добавляются
-
hentry,post-{$post_id},type-{$post_type},status-{$post_status},{$post_type}— выводятся для всех записей. Части в скобках заменяются на соответствующую переменную текущей записи;
{$post_type} НЕ выводится в админке... -
sticky— если это прилепленный пост, выводится только на странице is_home(). В админке выводитсяstatus-sticky; -
has-post-thumbnail— если у записи есть миниатюра; -
format-{формат записи}— если включена поддержка форматов. Если формат не указан то выведетformat-standart. -
post-password-required— для записей защищенных паролем. {$taxonomy}-{$slug}— если запись принадлежит таксономии. $taxonomy замениться названим таксы, а $slug названием термина (элемента таксономии). Например:category-blog;
Исключением тут является таксономияpost_tagдля нее префикс будетtag-, а неpost_tag-. Например:tag-novosti.
Хуки из функции
Возвращает
Строку[]. Массив в котором элементы это название классов.
Использование
get_post_class( $class, $post_id );
- $class(строка/массив)
- Классы, которые нужно добавить в список.
По умолчанию: '' - $post_id(число/WP_Post)
- ID или объект записи, классы которой нужно получить.
По умолчанию: null
Примеры
#1 Демонстрация вывода
$classes = get_post_class(); print_r( $classes ); /* Array ( [0] => post-219 [1] => post [2] => type-post [3] => status-publish [4] => format-standard [5] => has-post-thumbnail [6] => hentry [7] => category-blog [8] => tag-novosti ) */
#2 Выведем все классы в виде строки
Этот код можно использовать как замену для post_class():
echo '<div class="' . join(' ', get_post_class() ) . '">'; #3 Добавим свой класс
$classes = get_post_class('foo bar');
// или можно массивом
$classes = get_post_class( array('foo', 'bar') );
/*
Оба примера добавят в общий массив
Array
(
[0] => foo
[1] => bar
[2] => post-19
)
*/ #4 Удалим ненужный класс
Допустим нам нужно избавиться от класса hentry, тогда перед вызовом get_post_class() или post_class() используйте такой фильтр:
add_filter( 'post_class', 'remove_hentry' );
function remove_hentry( $classes ) {
$unset = array('hentry'); // можно добавить еще
return array_diff( $classes, $unset );
}
Заметки
- С версии 3.1 введена поддержка форматов постов.
- С версии 4.2 введена поддержка таксономий.
Список изменений
| С версии 2.7.0 | Введена. |
| С версии 4.2.0 | Custom taxonomy class names were added. |