回答:
私のアプローチ。追加機能なし、フィルターなし。:)
<?php $GLOBALS['wpdb']->current_post = 0; ?>
<div <?php post_class( 0 === ++$GLOBALS['wpdb']->current_post % 3 ? 'third' : '' ); ?>>
代替案:
<div <?php post_class( 0 === ++$GLOBALS['wpdb']->wpse_post_counter % 3 ? 'third' : '' ); ?>>
Notice: Undefined property: wpdb::$current_post in
@helgathevikingsの回答の追加として
static
クラス内で変数を使用すると、グローバル変数を持つのと同じ動作が可能になります。変数を変更しない限り、変数はそのままで変化しません。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
グローバル$wp_query
オブジェクトのプロパティを利用できます。キーワード付きの匿名関数を使用use
して、グローバル$wp_query
参照を渡します(PHP 5.3+):
add_filter( 'post_class', function( $classes ) use ( &$wp_query )
{
0 === $wp_query->current_post %3 AND $classes[] = 'YOUR CLASS';
return $classes;
} );
さらに、条件付きチェックでメインループに制限することもできin_the_loop()
ます。
$wpdb->current_post
ですか?
テーマがpost_class()を使用して投稿クラスを生成する場合は、試してみてください。私はそれがページネーションをどのように処理するか100%確信していません
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を使用できると思いますglobal
。とにかく:+1。
$wpdb->current_post
別の変数を作成せずに使用することもできます。