跳过wp查询中的前3个帖子

时间:2015-09-18 作者:Megh Gandhi

这是我使用的查询。

 <?php $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
 $wp_query = new WP_Query(\'order=asc&orderby=meta_value&meta_key=date&posts_per_page=6&paged=\' . $paged); ?>
有没有办法跳过前3篇文章,只跳过第一页(?paged=1),而不跳过其他页(?paged=2…)。

4 个回复
SO网友:Deepak kumar

要跳过post,只需在wp\\U查询中使用offset参数。

要显示最新的三个帖子:

<?php
$latestpost = new WP_Query(\'order=asc&orderby=meta_value&meta_key=date&posts_per_page=3\');

//Here add loop to display posts like

while($latestpost->have_posts()) : $latestpost->the_post();

the_title();

the_content();

endwhile; wp_reset_query();

//After that skip three posts using offset

 $latestpost = new WP_Query(\'order=asc&orderby=meta_value&meta_key=date&posts_per_page=6&offset=3&paged=\' . $paged); 

the_title();

the_content();

endwhile; wp_reset_query();

?>
就是这样

SO网友:Megh Gandhi

http://www.smashingmagazine.com/2009/06/10-useful-wordpress-loop-hacks/#2-use-more-than-one-loop-on-a-page-without-printing-duplicate-posts

我只是按照这个方法做了一些修改。。。

// in functions.php
$mega = new WP_Query(\'order=asc&orderby=meta_value&meta_key=date&posts_per_page=3\');
//set the posts per page to 3 so the id\'s of the first 3 posts will be shown 
$ids = array();
while ($mega->have_posts()) : $mega->the_post();
$ids[] = get_the_ID();

endwhile;
之后是主循环,用于跳过前三个帖子循环,我对此做了一些更改。

   $args= array(
\'post_type\' => \'post\',
\'posts_per_page\' => 6,
\'paged\' => $paged,
\'order\'=> \'asc\',
\'orderby\'=> \'meta_value\',
\'meta_key\'=>\'date\',
\'post__not_in\' => $ids

 );
    $wp_query = new WP_Query($args);
它就像我想要的那样。。

SO网友:Steed-Asprey

通过使用偏移参数:https://codex.wordpress.org/Class_Reference/WP_Query#Pagination_Parameters

$wp_query = new WP_Query(\'order=asc&orderby=meta_value&meta_key=date&posts_per_page=6&offset=3&paged=\' . $paged); ?>

SO网友:Aric Harris

而不是使用offset 您考虑过创建值为1的var的属性在循环中递增。如果循环小于4,则不执行任何操作,否则

<?php
    $p=1;
    while ( have_posts() ) : the_post();
        if($p > 3) {
?>
// DO STUFF
这并不能解决这个问题,但您可以设置一个条件,如果这是第一页,则跳过前3页?