每个岗位上的候补POST_CLASS

时间:2010-08-12 作者:curtismchale

我需要一个交替的(偶数,奇数…)在帖子上上课,在专栏上提供其他亮点。最好的办法是将其附加到post_类()上,以便它位于post_类()的每个实例上。下面是我在这一点上实现这一效果的代码。

<?php 

// setting other variables for alternating categories
$style_classes = array(\'even\', \'odd\');
$style_counter = 0;
?>

<?php if (have_posts()) : ?>

<?php while (have_posts()) : the_post(); ?>

<div class="<?php $k = $style_counter%2; echo $style_classes[$k]; $style_counter++; ?>">

<?php the_cotent(); ?>

</div>

<?php endwhile; ?>

<?php endif; ?>

4 个回复
最合适的回答,由SO网友:Adhip Gupta 整理而成

您应该在中添加以下代码functions.php:

add_filter ( \'post_class\' , \'my_post_class\' );
global $current_class;
$current_class = \'odd\';

function my_post_class ( $classes ) { 
   global $current_class;
   $classes[] = $current_class;

   $current_class = ($current_class == \'odd\') ? \'even\' : \'odd\';

   return $classes;
}
这确保了页面上的所有奇数帖子都有“奇”类,所有偶数帖子都有“偶数”类,只需使用post_class() 在你的主题中。

SO网友:artlung

这是可行的,它会在附加类中传递到post_class():

<?php $c = 0; ?>
<?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
        <div <?php post_class((++$c % 2 === 0) ? \'odd\' : \'even\'); ?>>
            <?php the_content(); ?>
        </div>
    <?php endwhile; ?>
<?php endif; ?>
EDIT: 这里有一种方法可以创建post_class() 这将记录页面上的计数。现在,它将使用一个新名称,oddeven_post_class() 但它确实能按你的意愿工作。你需要做的就是把这个放进functions.php:

/* Drop this block into functions.php */
class MyCounter {
    var $c = 0;
    function increment(){
        ++$this->c;
        return;
    }
    function oddOrEven(){
        $out = ($this->c % 2 === 0) ? \'odd\' : \'even\';
        $this->increment();
        return $out;
    }
}
$my_instance = new MyCounter();
function post_class_oddeven() {
    global $my_instance;
    ob_start();
    post_class($my_instance->oddOrEven());
    $str = ob_get_contents();
    ob_end_clean();
    echo $str;
}
/* end block */
所以说,使用post_class_oddeven() 在你的主题中,无论你打电话到哪里post_class()

SO网友:Marco Godínez

如果您想向不同的内容添加特定的类,我有另一个解决方案。例如,仅循环:

add_filter( \'post_class\', \'my_post_class\' );

function my_post_class( $classes ) {

  if ( ! is_single() ) {
    global $wp_query;

    // Set "odd" or "even" class if is not single
    $classes[] = $wp_query->current_post % 2 == 0 ? \'even\' : \'odd\' ;
  }

  return $classes;
}
因为您不想在显示单个内容时添加“偶数”或“奇数”类。

SO网友:ronald

你可以用直接的css来实现这一点。例如,在2017主题中,循环位于div“main”中:

#main .post {
    color: red;
}

#main .post:nth-of-type(2n) {
    color: blue;
}
会成功的。

结束

相关推荐