• 解決済 mintmind

    (@mintmind)


    少し複雑なループを形成したいのですが、思うようにいかないので質問させてください。

    前提として、カテゴリーアーカイブのページで、5記事毎にページ分割しています。
    やりたいことは、まず1ページ目に上から該当カテゴリーの最新記事を二つ、残りの三つをランダムで表示。
    そして2ページ目以降は五つともすべてランダムで表示したいと思っています。
    以下のようなループを作りまして、最新記事二つにランダム三つ、というのはなんとか実装できたのですが、対象が該当カテゴリーではなく全記事になってしまいます。
    どこに問題があるのかのご指摘と、できれば解決方法をご教示ください。他にもおかしな点があれば、ご指摘ください。
    よろしくお願い致します。

    <?php if(have_posts()) :
    
    	// 1ページ目、最新記事×2
    	if (!is_paged()) {
    		$my_query = new WP_Query('showposts=2&orderby=date&order=DESC');
    		while($my_query->have_posts()) : $my_query->the_post();
    
    		// ループ内容
    
    		endwhile;
    
    	// 1ページ目、ランダム記事×3
    		$my_query = new WP_Query('showposts=3&offset=2&orderby=rand&order=DESC');
    		while($my_query->have_posts()) : $my_query->the_post();
    
    		// ループ内容
    
    		endwhile;
    
    	// 2ページ目以降、ランダム記事×5
    	} else {
    		$my_query = new WP_Query('showposts=5&orderby=rand&order=DESC');
    		while($my_query->have_posts()) : $my_query->the_post();
    
    		//ループ内容
    
    		endwhile;
    	}
    
    endif; ?>
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 上記ソース内容の指摘ではなく考え方として。

    ループ開始
    if(1ページめ){
     ・カウントをセットし、ループの最後にカウントアップするようにしておく
     ・1~2記事めまでは通常表示
     ・3~5記事めまでは、表示内容を配列に保存
     ・配列をシャッフル
     ・3~5記事目を表示
    }else{
     2ページめ以降通常表示
    }
    ループ終了

    こんな動作じゃないかと?
    WP_Query は1回だけで。

    トピック投稿者 mintmind

    (@mintmind)

    なるほど。
    カウントアップは思いつきませんでした。
    もうちょっと試行錯誤してみます。

    ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「Wp_Queryを使ったループの質問」には新たに返信することはできません。