同一页上两个循环的PRE_GET_POST

时间:2015-09-18 作者:user2093301

我在主页上使用了两个循环,一个是显示最新的3篇帖子,另一个是显示剩余的帖子减去前3篇帖子。

我将以下代码用于pre\\u get\\u帖子。

function tax_and_offset_homepage( $query ) {
 if ( !is_admin() && $query->is_home() && $query->is_main_query() )
  $query->set( \'post_type\', array( \'post\') );

$ppp = get_option( \'posts_per_page\' );
//$ppp = 300;
$offset = 3;

if ( !$query->is_paged() ) {
  $query->set( \'posts_per_page\', $ppp);
        $query->set( \'offset\', $offset);

 }
} 
add_action(\'pre_get_posts\',\'tax_and_offset_homepage\');
基本循环的代码如下:

<?php 
 if ( have_posts() ) {
while ( have_posts() ) {
    the_post(); 
    //
    // Post Content here
    //
} // end while
} // end if
?>
但问题是pre\\u get\\u post可以应用于这两个循环中的一个。如何为同一页上的两个循环使用2个pre\\u get\\u posts函数?

1 个回复
SO网友:deflime

看看WP_Query 当您需要循环浏览帖子时。

<?php 
  $args = array( 
    \'post_type\' => \'post\',
    \'post_status\' => \'publish\',
    \'posts_per_page\' => -1,
    \'post__not_in\' => array(),
    \'order\' => \'DESC\',
  );
  $the_query = new WP_Query($args);

  // Show the first 3 posts
  while($the_query->have_posts()) { $the_query->the_post(); 
    echo \'<h2>\'.get_the_title().\'</h2>\';

    // Have we shown 3 yet? Break then. (current_post counter stats at 0)
    if( $the_query->current_post == 2 ) { break; }
  }

  // Continue the loop where we left off
  while($the_query->have_posts()) { $the_query->the_post(); 
    echo \'<h2>\'.get_the_title().\'</h2>\';
  }

  wp_reset_postdata();
?>

相关推荐

Increase offset while looping

我正在编写一个自定义帖子插件,它将自定义帖子分组显示为选项卡。每组4个岗位。是否可以编写一个偏移量随每次循环而增加的查询?因此,结果将是:-第一个查询显示从1到4的帖子-第二个查询显示从5到8的帖子-第三个查询显示从9到12的帖子等。 <div class=\"official-matters-tabs\"> <?php $args = array(\'post_type\' => \'official-matters\', \'showp