Yanıtlar:
Benim yaklaşımım. Ekstra fonksiyon yok, filtre yok. :)
<?php $GLOBALS['wpdb']->current_post = 0; ?>
<div <?php post_class( 0 === ++$GLOBALS['wpdb']->current_post % 3 ? 'third' : '' ); ?>>
Alternatif:
<div <?php post_class( 0 === ++$GLOBALS['wpdb']->wpse_post_counter % 3 ? 'third' : '' ); ?>>
Notice: Undefined property: wpdb::$current_post in
@Helgathevikings yanıtına ek olarak
static
Bir sınıfın içindeki değişkenlerin kullanılması , global değişkenlere sahip olmakla aynı davranışa izin verir: Değişmezler, yerinde kalırlar ve değişmezler.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
Küresel $wp_query
nesnenin mülkiyetinden yararlanabiliriz . En bir kullanalım anonim ile, işlev use
küresel aktarmak, anahtar kelime $wp_query
referans (tarafından PHP 5.3+ ):
add_filter( 'post_class', function( $classes ) use ( &$wp_query )
{
0 === $wp_query->current_post %3 AND $classes[] = 'YOUR CLASS';
return $classes;
} );
Dahası, koşullu bir kontrolle ana döngü ile sınırlayabiliriz in_the_loop()
.
$wpdb->current_post
?
temanız post_class () kullanıyorsa deneyebilirsiniz. sayfalandırma nasıl işleyeceğinden% 100 emin değilim b / ci test etmek için yerel kurulumumda yeterli gönderi yok
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
bir yerine bir var kullanabilirsiniz sanırım global
. Her neyse: +1.
$wpdb->current_post
başka bir değişken oluşturmak zorunda kalmadan da kullanabilirsiniz .
Bunu CSS ve javascript ile yapmanın yolları da vardır.
CSS3 ile, üçüncü bir seçiciyle her üç yayını da hedeflersiniz.
article.post:nth-child(3n+0)
{
background-color: #777;
}
Veya jQuery ile aynı tekniği kullanarak CSS sınıfını ekleyebilirsiniz.
jQuery(function($) {
$( "article.post:nth-child(3n+0)" ).addClass("custom-class");
});