Answers:
我的方法。没有额外的功能,没有过滤器。:)
<?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
对象的属性。让我们使用带有关键字的匿名函数通过引用(PHP 5.3+)use
传递全局变量:$wp_query
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%不确定它将如何处理b / ci分页我本地安装的帖子不足以对其进行测试
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而不是a global
来保持命名空间整洁。无论如何:+1。
$wpdb->current_post
而不必创建另一个变量。