Respuestas:
Mi acercamiento. Sin función adicional, sin filtro. :)
<?php $GLOBALS['wpdb']->current_post = 0; ?>
<div <?php post_class( 0 === ++$GLOBALS['wpdb']->current_post % 3 ? 'third' : '' ); ?>>
Alternativa:
<div <?php post_class( 0 === ++$GLOBALS['wpdb']->wpse_post_counter % 3 ? 'third' : '' ); ?>>
Notice: Undefined property: wpdb::$current_post in
Como una adición a la respuesta @helgathevikings
static
variables dentro de una clase permite el mismo comportamiento que tener variables globales: permanecen en su lugar y no cambian, a menos que no las modifique.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' );
Podríamos utilizar la current_post
propiedad del $wp_query
objeto global . Usemos una función anónima , con la use
palabra clave, para transmitir el global $wp_query
por referencia ( PHP 5.3+ ):
add_filter( 'post_class', function( $classes ) use ( &$wp_query )
{
0 === $wp_query->current_post %3 AND $classes[] = 'YOUR CLASS';
return $classes;
} );
Más adelante, podríamos restringirlo al bucle principal con una in_the_loop()
verificación condicional.
$wpdb->current_post
?
si su tema usa post_class () para generar clases de publicación, puede intentarlo. no estoy 100% seguro de cómo manejará la paginación b / ci no tengo suficientes publicaciones en mi instalación local para probarlo
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 en lugar de una global
para mantener limpio el espacio de nombres. De todos modos: +1.
$wpdb->current_post
sin tener que crear otra variable.
También hay formas de hacer esto con CSS y JavaScript.
Con CSS3 apuntas a cada tercera publicación con un enésimo selector secundario.
article.post:nth-child(3n+0)
{
background-color: #777;
}
O con jQuery, puede agregar la clase CSS utilizando la misma técnica.
jQuery(function($) {
$( "article.post:nth-child(3n+0)" ).addClass("custom-class");
});