При выводе постов внутри цикла WordPress вы можете использовать фукнции post_class() или get_post_class()
для присвоения посту уникальных CSS-классов в атрибуте class=""
, что позволит стилизовать разные типы, форматы постов или конкретные записи по-другому.
Каждый класс при добавлении проходит через очистку функцией esc_attr().
Полный список добавляемых классов.
get_post_class( $class = '', $post_id = null );
Параметры
- $class
- (строка|массив) класс или массив классов CSS, которые вы хотите добавить к общему списку добавляемых классов.
- $post_id
- (целое число|WP_Post) ID или объект поста (по умолчанию — текущий из цикла).
Примеры
Хотя, возможно в этой ситуации имеет смысл рассмотреть использование функции post_class().
// получаем массив классов текущего поста в цикле $classes = get_post_class(); // при выводе HTML-теги поста, добавляем классы echo '<article class="' . esc_attr( implode( ' ', $classes ) ) . '">';
Попробуем теперь при выводе добавить парочку собственных классов.
$post_class = get_post_class( array( 'my-class-1', 'my-class-2' ) ); var_dump( $post_class ); /* Примерный вывод для обычной записи: array 0 => string 'post-[ID]' (length=7) 1 => string '[post_type]' (length=4) 2 => string 'type-[post_type]' (length=9) 3 => string 'status-[post_status]' (length=14) 4 => string 'format-[post_format]' (length=15) 5 => string 'hentry' (length=6) 6 => string 'category-[...]' 7 => string 'tag-[...]' 8 => string 'my-class-1' (length=10) 9 => string 'my-class-2' (length=10) */
Фильтр post_class
При помощи этого фильтра вы можете изменить список классов, возвращаемых функцией для всего сайта. Например давайте удалим класс hentry
.
/** * @snippet Удаляем класс "hentry" из функции get_post_class() * @author Миша Рудрастых * @url https://misha.agency/wordpress/get_post_class.html * @param string[] $classes Массив CSS-классов, возвращаемых функцией * @param string[] $class Массив CSS-классов, добавленных черех параметр * @param int $post_id ID поста */ add_filter( 'post_class', 'true_remove_hentry', 25, 3 ); function true_remove_hentry( $classes, $class, $post_id ) { // ищем класс hentry и удаляем его из массива if ( ( $key = array_search( 'hentry', $classes ) ) !== false ) { unset( $classes[ $key ] ); } return $classes; }
Не знаете, куда вставлять код?