这件事post_class
把这个问题称为“与WordPress相关”是一个很简单的理由。主要是PHP,但我会咬一口。
您可以通过先设置变量来简化操作。
$additional_class = (++$j % 2 == 0) ? \'evenpost\' : \'oddpost\'; ?>
<article id="post-<?php the_ID(); ?>" <?php post_class(\'clearfix span4 \'.$additional_class); ?> role="article">
但如果您小心,可以将代码直接写入
post_class
参数
<article id="post-<?php the_ID(); ?>" <?php post_class(\'clearfix span4 \'.((++$j % 2 == 0) ? \'evenpost\' : \'oddpost\')); ?> role="article">
根据芯片的刺激,我做了一个
post_class
基于过滤器的解决方案:
function even_odd_post_class($classes) {
global $wp_query;
$classes[] = ($wp_query->current_post % 2 == 0) ? \'evenpost\' : \'oddpost\';
return $classes;
}
add_filter(\'post_class\',\'even_odd_post_class\');
绕过那个
$j
问题中的原始实现中的变量可能很棘手,需要使用静态变量进行全局或基于对象的回调,因此我不知道是否会认为它更整洁。如果我们可以使用已经全球化的
$wp_query
计数器,基于过滤器的解决方案并不难管理。我仍然不知道我是否会称之为neater,因为它将运行在潜在的多个索引以及单个帖子页面上,并且需要额外的内部逻辑才能删除。直接将代码编辑到适当的模板中至少有可能成为更干净、更高效的解决方案。哪一种最好可能取决于上下文,但现在有三种选择。