Відповіді:
Мій підхід. Без додаткової функції, без фільтра. :)
<?php $GLOBALS['wpdb']->current_post = 0; ?>
<div <?php post_class( 0 === ++$GLOBALS['wpdb']->current_post % 3 ? 'third' : '' ); ?>>
Альтернатива:
<div <?php post_class( 0 === ++$GLOBALS['wpdb']->wpse_post_counter % 3 ? 'third' : '' ); ?>>
Notice: Undefined property: wpdb::$current_post in
Як додаток до відповіді @helgathevikings
static
змінних всередині класу дозволяє таку саму поведінку, що і глобальні змінні: вони залишаються на місці і не змінюються, якщо ви їх не змінюєте.function wpse44845_add_special_post_class( $classes )
{
// Thanks to @Milo and @TomAuger for the heads-up in the comments
0 === $GLOBALS['wpdb']->current_post %3 AND $classes[] = 'YOUR CLASS';
return $classes;
}
add_filter( 'post_class','wpse44845_add_special_post_class' );
Ми могли б використовувати current_post
властивість глобального $wp_query
об’єкта. Давайте використаємо анонімну функцію з use
ключовим словом, щоб передати глобальну $wp_query
посилання ( PHP 5.3+ ):
add_filter( 'post_class', function( $classes ) use ( &$wp_query )
{
0 === $wp_query->current_post %3 AND $classes[] = 'YOUR CLASS';
return $classes;
} );
Далі ми могли б обмежити його основним циклом за допомогою in_the_loop()
умовної перевірки.
$wpdb->current_post
?
якщо ваша тема використовує post_class () для генерації класів публікацій, ви можете спробувати. я не на 100% впевнений, як він буде обробляти пагинацію b / ci не вистачає повідомлень на моїй локальній установці, щоб перевірити це
add_filter('post_class','wpa_44845');
global $current_count;
$current_count = 1;
function wpa_44845( $classes ){
global $current_count;
if ($current_count %3 == 0 ) $classes[] = 'special-class';
$current_count++;
return $classes;
}
static
var замість а, global
щоб зберегти чистий простір імен. У будь-якому разі: +1.
$wpdb->current_post
без створення іншої змінної.
Існують також способи зробити це за допомогою CSS та javascript.
За допомогою CSS3 ви орієнтуєтесь на кожне третє повідомлення за допомогою селектора nth-child.
article.post:nth-child(3n+0)
{
background-color: #777;
}
Або з jQuery ви можете додати клас CSS за тією ж методикою.
jQuery(function($) {
$( "article.post:nth-child(3n+0)" ).addClass("custom-class");
});