post_class
Это хук WordPress - post_class. Плагин его просто использует.
Позволяет изменить список CSS классов для текущей записи.
Этот хук срабатывает в конце функции post_class().
Использование
add_filter( 'post_class', 'wp_kama_post_class_filter', 10, 3 ); /** * Function for `post_class` filter-hook. * * @param string[] $classes An array of post class names. * @param string[] $css_class An array of additional class names added to the post. * @param int $post_id The post ID. * * @return string[] */ function wp_kama_post_class_filter( $classes, $css_class, $post_id ){ // filter... return $classes; }
- $classes(строка[])
- Массив CSS классов для текущей записи.
- $class(строка[])
- Массив дополнительных CSS классов, добавленных к записи.
- $post_id(число)
- ID записи.
Примеры
#1 Добавим CSS класс, если у записи нет миниатюры
При использовании функции post_class() в списке CSS классов присутствует класс has-post-thumbnail
, если у текущей записи есть миниатюра, но если её нет - ничего не добавляет. Исправим это следующим кодом:
add_filter( 'post_class', 'add_class_without_post_thumbnail', 10, 3 ); function add_class_without_post_thumbnail( $classes, $class, $post_id ){ if( ! has_post_thumbnail( $post_id ) ){ $classes[] = 'no-post-thumbnail'; } return $classes; }
Где вызывается хук
woocommerce/includes/wc-template-functions.php 651
$post_classes = apply_filters( 'post_class', $post_classes, $class, $product->get_id() );
Где используется хук в WooCommerce
woocommerce/includes/wc-template-functions.php 648
remove_filter( 'post_class', 'wc_product_post_class', 20 );
woocommerce/includes/wc-template-functions.php 654
add_filter( 'post_class', 'wc_product_post_class', 20, 3 );
woocommerce/includes/wc-template-hooks.php 14
add_filter( 'post_class', 'wc_product_post_class', 20, 3 );