Respostas:
Minha abordagem. Sem função extra, sem filtro. :)
<?php $GLOBALS['wpdb']->current_post = 0; ?>
<div <?php post_class( 0 === ++$GLOBALS['wpdb']->current_post % 3 ? 'third' : '' ); ?>>
Alternativo:
<div <?php post_class( 0 === ++$GLOBALS['wpdb']->wpse_post_counter % 3 ? 'third' : '' ); ?>>
Notice: Undefined property: wpdb::$current_post in
Como complemento à resposta @helgathevikings
static
variáveis dentro de uma classe permite o mesmo comportamento de ter variáveis globais: elas permanecem no lugar e não mudam, a menos que você não as altere.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' );
Poderíamos utilizar a current_post
propriedade do $wp_query
objeto global . Vamos usar uma função anônima , com a use
palavra - chave, para transmitir o global $wp_query
por referência ( PHP 5.3+ ):
add_filter( 'post_class', function( $classes ) use ( &$wp_query )
{
0 === $wp_query->current_post %3 AND $classes[] = 'YOUR CLASS';
return $classes;
} );
Mais adiante, poderíamos restringi-lo ao loop principal com uma in_the_loop()
verificação condicional.
$wpdb->current_post
?
se o seu tema usa post_class () para gerar post classes, você pode tentar. não tenho 100% de certeza de como ele vai lidar com paginação b / ci não tenho posts suficientes na minha instalação local para testá-lo
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 em vez de um global
para manter o namespace limpo. Enfim: +1.
$wpdb->current_post
sem precisar criar outra variável.
Também existem maneiras de fazer isso com CSS e javascript.
Com CSS3, você segmenta cada terceira postagem com um seletor de enésimo filho.
article.post:nth-child(3n+0)
{
background-color: #777;
}
Ou com o jQuery, você pode adicionar a classe CSS usando a mesma técnica.
jQuery(function($) {
$( "article.post:nth-child(3n+0)" ).addClass("custom-class");
});