Réponses:
Mon approche. Pas de fonction supplémentaire, pas de filtre. :)
<?php $GLOBALS['wpdb']->current_post = 0; ?>
<div <?php post_class( 0 === ++$GLOBALS['wpdb']->current_post % 3 ? 'third' : '' ); ?>>
Alternative:
<div <?php post_class( 0 === ++$GLOBALS['wpdb']->wpse_post_counter % 3 ? 'third' : '' ); ?>>
Notice: Undefined property: wpdb::$current_post in
En complément de la réponse @helgathevikings
static
variables à l'intérieur d'une classe permet le même comportement que d'avoir des variables globales: elles restent en place et ne changent pas, sauf si vous ne les modifiez pas.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' );
Nous pourrions utiliser la current_post
propriété de l' $wp_query
objet global . Utilisons une fonction anonyme , avec le use
mot - clé, pour transmettre le global $wp_query
par référence ( PHP 5.3+ ):
add_filter( 'post_class', function( $classes ) use ( &$wp_query )
{
0 === $wp_query->current_post %3 AND $classes[] = 'YOUR CLASS';
return $classes;
} );
Plus loin, nous pourrions le restreindre à la boucle principale avec un in_the_loop()
contrôle conditionnel.
$wpdb->current_post
?
si votre thème utilise post_class () pour générer des classes de post, vous pouvez essayer. je ne suis pas sûr à 100% de la façon dont il va gérer la pagination b / ci n'a pas assez de messages sur mon installation locale pour le tester
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 au lieu d'un global
pour garder l'espace de noms propre. Quoi qu'il en soit: +1.
$wpdb->current_post
sans avoir à créer une autre variable.
Il existe également des moyens de le faire avec CSS et javascript.
Avec CSS3, vous ciblez chaque troisième publication avec un sélecteur nième enfant.
article.post:nth-child(3n+0)
{
background-color: #777;
}
Ou avec jQuery, vous pouvez ajouter la classe CSS en utilisant la même technique.
jQuery(function($) {
$( "article.post:nth-child(3n+0)" ).addClass("custom-class");
});