質問編集履歴

1 言葉足らずの部分がありましたので加筆しました

pitacora

pitacora score 18

2017/07/25 17:47  投稿

WordPressの記事一覧取得でカテゴリ順に記事を出力したい
WordPressを使って構築したサイトで、ページャー付きの記事の一覧を出力しようとしています。
この出力の順序をカテゴリごとにしたいのですが、うまく考えつかずにいます。
何か良いお知恵をお借りできないかと思い投稿させていただきました。
望んでいる実行結果
---
- 1ページあたりの出力件数を指定できる(全件表示ではない)
- WP Page Naviをつかってページャーを出力したい
▼このような感じです
カテゴリ1の記事
カテゴリ1の記事
カテゴリ1の記事
カテゴリ2の記事
カテゴリ2の記事
例えばカテゴリにはカテゴリ1・カテゴリ2・カテゴリ3という3つのタームがあり、
表示件数が5件だとして、カテゴリ1の記事が3つ、カテゴリ2の記事が2つ、カテゴリ3の記事が2つだとすると、以下のようなかたちになるのが理想です。
▼1ページ目
カテゴリ1の記事 2017/07/25(記事作成日)
カテゴリ1の記事 2017/07/24(記事作成日)
カテゴリ1の記事 2017/07/23(記事作成日)
カテゴリ2の記事 2017/07/25(記事作成日)
カテゴリ2の記事 2017/07/24(記事作成日)
(ページャーがはいる)
 
▼2ページ目  
カテゴリ3の記事 2017/07/25(記事作成日)  
 
試したこと
---
get_termsでタームを取得し、foreachで繰り返し処理してみました。
このままだと各カテゴリ全件表示であれば可能なのですが、ページャーに対応させたいときはどうしたらいいのかが考えつかずに困っています。
そもそもそういったことはできないのでしょうか…。何かアドバイスをいただけると幸いです。
```PHP
<?php
   $terms = get_terms('category');
   foreach ( $terms as $term ){
       $args = array(
           'posts_per_page' => -1,
           'post_type' => 'post',
           'tax_query' => array(
               array(
                   'taxonomy' => 'category',
                   'field' => 'slug',
                   'terms' => $term->slug,
               )
           )
       );
       $myPost = get_posts($args);
       if($myPost):
           foreach($myPost as $post) : setup_postdata( $post );
           ?>
               <a href="<?php the_permalink(); ?>">
               <?php $title = get_the_title( ); echo $title; ?>
               </a>
           <?
           endforeach;
       endif;
       wp_reset_postdata();
   }
?>
```
  • PHP

    29333 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    11330 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る