此部分存在问题:
++$GLOBALS[\'wpdb\']->current_post
没有
current_post 的属性
wpdb 同学们,你们很可能把
wpdb 使用
WP_Query 班
此外,我们一般不希望修改current_post 全球的财产WP_Query, 如果我们和全球人打交道,它肯定会“咬我们”;-)
请注意current_post 的属性WP_Query 已经在为我们计算了$this->current_post++; 在…内next_post(), 这叫做内在the_post(). 看见here. 因此,无需在循环中手动(++)增加它。
下面是一个使用post_class 过滤器,借助静态变量:
add_filter( \'post_class\', function( $classes )
{
static $instance = 0;
if( in_the_loop() )
$classes[] = ( 0 === $instance++ % 2 ) ? \'even\' : \'odd\';
return $classes;
} );
我们在主查询循环中以post类为目标。请记住根据需要修改偶数/奇数类和其他限制。
使用post_class 过滤器可能意味着我们的模板部件具有更好的可重用性。
更新
看起来您使用的是@toscho的单行程序的第一个版本
answer, 创建自定义
current_post 全局属性(用于计数)
wpdb 对象然后,他建议使用带前缀的自定义属性,如
wpse_post_counter. 但它似乎需要初始化以避免PHP通知。
@kaiser确实给出了一个很好的回答here 使用current_post 全球的财产$wp_query (可能不是全球$wpdb).
自从我给了promise here, 关于匿名函数和全局变量,我应该将其重写为:See myedit here- 我们使用use 要传递到全局的关键字$wp_query 对象