此部分存在问题:
++$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
对象