web-dev-qa-db-ja.com

Wp_queryの最初の3投稿をスキップする

これが私が使ったクエリです。

 <?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); ?>

最初のページ(?paged = 1)でのみ最初の3つの投稿をスキップし、他のページ(?paged = 2 ....)でスキップする方法はありますか。

2
Megh Gandhi

投稿をスキップするには、wp_queryのoffsetパラメータを使用するだけです。

最新の3つの投稿を表示するには

<?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();

?>

それでおしまい

3
Deepak kumar

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

さて私はちょうどこの方法に従って、それにいくつかの変更を加えました...

// 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;

その後、最初の3つの投稿をスキップするためのメインループにループします。

   $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);

そしてそれは私が欲しかったように動作します..

1
Megh Gandhi

Offsetパラメータを使用することで: 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); ?>
0
William C

offset属性を使用する代わりに、1の値を持つvarをループ内でインクリメントすることを考えました。ループが4未満の場合は何もしません。

<?php
    $p=1;
    while ( have_posts() ) : the_post();
        if($p > 3) {
?>
// DO STUFF

これでは問題は解決しませんが、これが最初のページの場合は最初の3ページをスキップするという条件を設定できますか。

0
Aric Harris