在自定义循环(WP_QUERY)中添加POST类

时间:2016-07-11 作者:tmgale12

通常,如果我想添加自定义的post类,我会使用post_class 滤器

但是,当使用自定义循环时post_class 无法访问筛选器。

我正在尝试应用一些类,这些类将根据计数将帖子放置到列中。下面是我在不使用自定义循环时使用的示例代码;

    //Add Post Class Filter
add_filter(\'post_class\', \'sk_post_class\');

function sk_post_class($classes) {
    global $loop_counter;
    $classes[] = \'one-third\';

    if (($loop_counter + 3) % 3 == 0) {
        $classes[] .= \'first\';
    }

    $loop_counter++;
    return $classes;
}
自定义循环中的每个帖子都用<div class = "answers"></div>. 我想我需要修改上面的代码,以便将类添加到<div class = "answers"> 基于循环计数器。

有谁能给我指出一个正确的方向,告诉我如何才能做到这一点?

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

正如米洛所说,我需要使用post_class 函数使用post_class 滤器

通过添加<?php post_class(); ?> 对于循环中的div,我可以成功地修改post类。下面是我的完整代码,包含post_class 过滤器和post_class 作用

参考号:https://codex.wordpress.org/Function_Reference/post_class

          <?php


      //Call in the header
      get_header();


          //Add Post Class Filter
      add_filter(\'post_class\', \'sk_post_class\');

      function sk_post_class($classes) {
          global $loop_counter;
          $classes[] = \'one-third\';

          if (($loop_counter + 2) % 2 == 0) {
              $classes[] .= \'first\';
          }

          $loop_counter++;
          return $classes;
      }


      $args = array (
        \'post_type\'  => array( \'test\' ),
      );

      $query = new WP_Query( $args );

      if ( $query->have_posts() ) {
        while ( $query->have_posts() ) {
          $query->the_post(); ?>

          <div id="post-<?php the_ID(); ?>"<?php post_class(); ?>>

              <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>

          </div>

      <?php }
      } else {
        echo \'No posts found\';
      }

      // Restore original Post Data
      wp_reset_postdata();


       // Call in footer 
      get_footer();

      ?>