Intereting Posts
Как я могу добавить reCaptcha Google в модуль формы контакта Divi? Изменение URL-адреса страницы и подключение информационного бюллетеня к MailChip Получить координаты выбранной области для использования в графических картах Календарь событий с использованием insert_post_data после save_post и insert_post после post_transition draft_to_schedule Пользователи вместо сообщений: как изменить основной запрос? Как сделать несколько проверок_nonce в одной функции? Отображение информации об авторе и последнее сообщение автора в лайтбокс при нажатии на имя автора Как экспортировать и импортировать продукты WooCommerce с пользовательскими атрибутами? Проблема с аутентификацией API REST Woocommerce Я не могу получить свою пользовательскую область виджетов для показа на моем сайте WordPress WordPress ThickBox модальный в панели администратора продолжает загружать Как сделать отдельную RSS-ленту для каждого настраиваемого типа сообщения Добавьте the_post_thumbnail_url в короткий код в function.php Сломанная разбивка на страницы, нужна помощь в выяснении, почему! Retreive теги из прикрепленного сообщения для медиа на странице

Пользовательский запрос с фильтром post_class с использованием current_post не работает

У меня есть новый WP_Query на моей странице архива. У меня также есть фильтр post_class, который условно добавляет first класс, поэтому я могу отображать их в строках по 3 надёжно.

Это фильтр post_class

 function sm_inline_post_class( $classes ) { global $wp_query; if( 0 == $wp_query->current_post || 0 == $wp_query->current_post % 3 ) $classes[] = 'first'; return $classes; } add_filter( 'post_class', 'sm_inline_post_class' ); 

Это отлично подходит для запроса по умолчанию, но first класс не применяется к сообщениям из моего пользовательского запроса.

Как вы условно применяете почтовые классы к записям из пользовательских запросов?

Solutions Collecting From Web of "Пользовательский запрос с фильтром post_class с использованием current_post не работает"

Вы используете глобальный $wp_query не свой пользовательский запрос. Либо объявляйте свой глобальный, как global $wp_query_archives а затем используйте его в sm_inline_post_class , осознавая недостатки использования глобальных переменных или выполняйте небольшую работу следующим образом:

 $class = sm_inline_post_class( array(), $my_custom_query ); 

И затем передайте $class в качестве первого аргумента для вашего вызова post_class (я полагаю, вы используете эту функцию на своей странице архива).

Затем измените функцию sm_inline_post_class следующим образом:

 function sm_inline_post_class( $classes, $query = null ) { global $wp_query; $query = ( $query == null ) ? $wp_query : $query; if( 0 == $query->current_post || 0 == $query->current_post % 3 ) { $classes[] = 'first'; return $classes; } 

Это, однако, всегда может прикрепить вас к «первым», если вы используете свой собственный WP_Query вложенный в $wp_query который, как $wp_query , имеет значение current_post $wp_query кратным 3.

Еще более безопасным вариантом будет использование другой функции для получения имени класса:

 $class = custom_inline_post_class( array(), $my_custom_query ); function custom_inline_post_class( $classes, $query ) { if( 0 == $query->current_post || 0 == $query->current_post % 3 ) { $classes[] = 'first'; return $classes; }