Odd/even class on article tag

时间:2013-04-02 作者:Johann

我将文章标记与以下代码一起使用:

<article id="post-<?php the_ID(); ?>" <?php post_class(\'clearfix span4 \'); ?> role="article">
</article>
我想在电流中加上“奇数”和“偶数”post_class.

我在其他网站上发现以下代码:

<?php echo (++$j % 2 == 0) ? \'evenpost\' : \'oddpost\'; ?>
为什么它与我的代码不兼容?

<article id="post-<?php the_ID(); ?>" <?php post_class(\'clearfix span4 <?php echo (++$j % 2 == 0) ? \'evenpost\' : \'oddpost\'; ?>\'); ?> role="article">

2 个回复
最合适的回答,由SO网友:vancoder 整理而成

尝试此操作(未测试):

<?php $zebra = (++$j % 2 == 0) ? \'evenpost\' : \'oddpost\'; ?>

<article id="post-<?php the_ID(); ?>" <?php post_class(\'clearfix span4 \' . $zebra); ?> role="article">
在将其传递给post\\u类之前,只需将添加/偶数类放入变量中。

SO网友:s_ha_dum

这件事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,因为它将运行在潜在的多个索引以及单个帖子页面上,并且需要额外的内部逻辑才能删除。直接将代码编辑到适当的模板中至少有可能成为更干净、更高效的解决方案。哪一种最好可能取决于上下文,但现在有三种选择。

结束