奇数/双数帖子加班级减去第一帖

时间:2017-07-24 作者:Justice Is Cheap

我使用下面的方法向我的奇数/偶数帖子中添加特定的类,但我还需要向除第一篇之外的所有帖子中添加一个类。除了第一篇帖子之外,有没有一种快速、语义化的方法可以做到这一点?

<?php $homenews_query = new WP_Query( \'posts_per_page=4\' ); ?>

            <?php while ($homenews_query -> have_posts()) : $homenews_query -> the_post(); ?>
            <?php if ($homenews_query->current_post % 2 == 0): ?>
<!-- stuff here -->
<?php else: ?>
<!-- stuff here -->    
<?php endif ?>

    <?php 
        endwhile;
        wp_reset_postdata();
    ?>
我尝试了各种方法来实现这一点——主要是使用jQuery(addClass和removeClass),但它对我不起作用。

TIA!

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

您可以通过多种方式来实现这一点,但您需要一些对所有帖子都通用的东西,例如:

<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
然后在你的css:

.post:not(:first-child) {
  // add the rules of the class you wanted to add
}
只需选择除类中post的第一个子元素以外的所有元素post 并添加要添加的类的规则。

你也可以用js/jquery:

$(\'.post:not(:first-child)\').addClass(\'myclass\');
这与css的逻辑相同,但如果您想添加一个单独的类,您可以这样做。

或者你可以php:

<?php $count = 0 ?>
<?php while ($homenews_query -> have_posts()) : $homenews_query -> the_post(); ?>

<?php if ($count != 0): ?>
  <!-- stuff here -->
<?php endif ?>

<?php if ($homenews_query->current_post % 2 == 0): ?>
  <!-- stuff here -->
<?php else: ?>
  <!-- stuff here -->    
<?php endif ?>

<?php 
  $count++;
  endwhile;
  wp_reset_postdata();
?>
我知道第一个帖子是index 0 所以只要检查一下计数是否为!=0

或者更简单一些,您有一个名为current_post 如果你不在第一篇帖子中,只需检查一下,如下所示:

<?php while ($homenews_query -> have_posts()) : $homenews_query -> the_post(); ?>

<?php if ($homenews_query->current_post != 0): ?>
  <!-- stuff here -->
<?php endif ?>

<?php if ($homenews_query->current_post % 2 == 0): ?>
  <!-- stuff here -->
<?php else: ?>
  <!-- stuff here -->    
<?php endif ?>
<?php 
  endwhile;
  wp_reset_postdata();
?>

Edit: I posted with the inverse logic, fixed now.

SO网友:WPExplorer

最简单的方法是向循环中添加一个计数器变量。但也要确保添加一个帖子存在检查,以防止在没有找到帖子时出现问题,我强烈建议使用良好的评论和语法-这是一个好习惯;)

以下是修改后的代码示例:

<?php
// Query posts
$homenews_query = new WP_Query( \'posts_per_page=4\' );

// If posts are found do stuff
if ( $the_query->have_posts() ) :

    // Define counter
    $count = 0;

    // Loop through posts
    while ( $homenews_query->have_posts() ) : $homenews_query->the_post();

        // Add to counter for each entry
        $count ++;

        // Define default classname for entry
        $class = \'entry\';

        // Add class name to all excerpt the first
        if ( 1 !== $count ) {
            $class .= \' first-post\';
        }

        // Add odd/even classes
        $class .= $count % 2 == 0 ? \' even\' : \' odd\';


    // No posts found
    else: ?>

        <!-- stuff here -->

    <?php endif ?>

    <?php
    // End loop
    endwhile;

    // Reset post data to prevent query conflicts
    wp_reset_postdata(); 

// End posts check
endif; ?>

结束

相关推荐

我更新了我自己主题的代码和css

我的电脑里有mt主题文件夹,我在那里做了所有的更新。现在我想上传我的主题的新版本以及我所做的更改。我的问题是:我是否只需通过FTP上传主题文件夹并覆盖现有文件夹?这会破坏或改变我的帖子,还是只会更新主题设计?我昨晚做的,但我担心这会改变一切。。。