Antworten:
Mein Ansatz. Keine Zusatzfunktion, kein Filter. :)
<?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
Als Ergänzung zu @helgathevikings antworten
static
Variablen in einer Klasse hat dasselbe Verhalten wie die Verwendung globaler Variablen: Sie bleiben an Ort und Stelle und ändern sich nicht, sofern Sie sie nicht ändern.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' );
Wir könnten die current_post
Eigenschaft des globalen $wp_query
Objekts nutzen. Verwenden wir eine anonyme Funktion mit dem use
Schlüsselwort, um die globale $wp_query
Referenz weiterzugeben ( PHP 5.3+ ):
add_filter( 'post_class', function( $classes ) use ( &$wp_query )
{
0 === $wp_query->current_post %3 AND $classes[] = 'YOUR CLASS';
return $classes;
} );
Weiterhin könnten wir es mit einer bedingten Prüfung auf die Hauptschleife beschränken in_the_loop()
.
$wpdb->current_post
?
Wenn Ihr Theme post_class () verwendet, um Post-Klassen zu generieren, können Sie es versuchen. Ich bin mir nicht 100% sicher, wie es mit Paginierung umgehen wird
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 anstelle von a verwenden global
, um den Namespace sauber zu halten. Trotzdem: +1.
$wpdb->current_post
ohne eine andere Variable erstellen zu müssen.
Es gibt auch Möglichkeiten, dies mit CSS und Javascript zu tun.
Mit CSS3 zielen Sie auf jeden dritten Beitrag mit einem Selektor für n-te Kinder.
article.post:nth-child(3n+0)
{
background-color: #777;
}
Oder mit jQuery können Sie die CSS-Klasse mit derselben Technik hinzufügen.
jQuery(function($) {
$( "article.post:nth-child(3n+0)" ).addClass("custom-class");
});