WordPress|記事一覧ページの作り方|archive.php

WordPress記事一覧の作り方のサムネイル画像
目次

記事一覧ページの機能

この記事で紹介する記事一覧ページ(archive.php)に付属する機能は下記のとおりです。

機能一覧
  • 記事タイトル・投稿日・カテゴリー名・サムネイル画像の表示
  • 記事が無い場合の表示:「投稿がありませんでした。」と表示
  • 1ページに表示する記事数の指定
  • ページネーション機能

functions.phpの設定

そもそも記事一覧ページ(archive.php)を表示させるためには、functions.phpに一筆コードを書く必要があります。

その記述例を下に載せておきます。

/*----------------------------------------------------------*/
/* 投稿アーカイブページの表示設定 */
/*----------------------------------------------------------*/
function post_has_archive($args, $post_type)
{
  if ('post' == $post_type) {
    $args['rewrite'] = true;
    $args['has_archive'] = 'news'; //URLとして使いたい文字列
  }
  return $args;
}
add_filter('register_post_type_args', 'post_has_archive', 10, 2);
コード解説

基本コピペで実装できますが、8行目のslug(URLとして使いたい文字列)は各自で置き換えて下さい。上の記述例では「お知らせ」ページを想定して「news」にしています。

fuctions.phpに記述し終わったら、管理画面でパーマリンクを更新をして下さい。

パーマリンク更新方法

WordPress管理画面>設定>パーマリンク>「変更を保存」をクリック

詳しくは下記の記事をご参照下さい。

あわせて読みたい
【WordPress】投稿アーカイブページを表示させるためのfunctions.php設定 投稿アーカイブ(一覧)ページはfunctions.phpに設定を記述しないと表示されません。この記事ではその方法を紹介します。 functions.phpの記述例 投稿アーカイブページ...

PHP記述例

記事一覧ページの「記事一覧とページネーション」部分の記述例は下記のとおりです。コードの意味はコメントでコード横に書いてあります。

<!-- 記事一覧-->
<ul class="post-archive_wrapper">
  <?php
  // ページ番号の取得
  $paged = get_query_var('paged') ? get_query_var('paged') : 1;
  $args = array(
    'post_type' => 'post', //投稿タイプ
    'posts_per_page' => 10, //1ページの表示数
    'paged' => $paged //何ページ目の情報を取得するかを指定
  );

  // 以下、ループ構造
  $the_query = new WP_Query($args);
  if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); ?>
      <?php
      $cat = get_the_category(); // カテゴリの配列を返すWordPress関数
      $catslug = $cat[0]->slug; // カテゴリslugの変数
      $cat_name = $cat[0]->name; // カテゴリ名の変数
      ?>

      <li class="post_wrapper">
        <a href="<?php the_permalink(); ?>" class="archive_li-a">
          <!-- サムネイル -->
          <div class="post-img-wrapper">
            <?php the_post_thumbnail('medium'); ?>
          </div>
          <div class="post-date_wrapper">
            <!-- カテゴリ名表示(カテゴリ名slugでクラス付与・リンクなし) -->
            <div class="post-classification_wrapper">
              <div class="<?php echo esc_attr($catslug); ?>"><?php echo esc_html($cat_name); ?></div>
            </div>
            <!-- タイトル表示 -->
            <div class="post-title"><?php the_title() ?></div>
            <!-- 投稿日表示 -->
            <div class="post-date"><?php the_time('Y年n月j日') ?></div>
          </div>
        </a>

      </li>

    <?php endwhile; ?>
    <?php wp_reset_postdata(); ?>
  <?php else : ?>
    <p>投稿がありませんでした。</p>
  <?php endif;
  ?>
</ul>

<!-- ページネーション全体 -->
<div class="post-pagination-wrapper">
  <?php
  $args = array(
    'type' => 'list',
    'current' => $paged,
    'total' => $the_query->max_num_pages,
    'prev_text' => '<',
    'next_text' => '>',
  );
  echo paginate_links($args);
  ?>
</div>
コード解説
  • 1ページに表示する記事数:8行目‘posts_per_page’=>10の数字を変更して下さい。上の例ではページ当たり10記事表示になっています。もし、全記事表示させたい場合は-1と記入して下さい。
  • 各記事へのリンク:22行目the_permalink()で取得・出力しています。
  • 各記事のタイトル(H1タグ):33行目the_title()で取得・出力しています。
  • 各記事の投稿日:35行目the_time(‘Y年n月j日’)で取得・出力しています。カッコ内を変更することで日付の書式を変更可能です。
  • 各記事のカテゴリー名:15-19行目のget_the_category()関数で取得・関数化しています。$cat_nameという関数にして30行目でecho+エスケープ処理で出力しています。
  • 各記事のカテゴリーのslug:15-19行目のget_the_category()関数で取得・関数化しています。$catslug という関数にして30行目でecho+エスケープ処理で出力しています。
  • ページネーション設定1:3-10行目で、ページネーション・ページ番号の取得等のための初期設定を行っています。
  • ページネーション設定2:50-61行目でページネーションの設定を行っています。ページネーションが必要ない場合はこの部分のコードをすべて削除して下さい。

関連記事

ページネーションの作り方について

詳しくは下記の「【WordPress】投稿アーカイブのページネーションの作り方」で解説しています。

あわせて読みたい
【WordPress】投稿アーカイブのページネーションの作り方 投稿アーカイブページのページネーションの作り方を紹介します。 完成イメージ WordPressでは投稿アーカイブページのページネーション用のコードが最初から用意されてい...

お知らせ一覧の作り方について

あわせて読みたい
【WordPress】お知らせ一覧(投稿アーカイブ)ページの作り方【オリジナルテーマ】 WordPressのお知らせ一覧ページの作り方を紹介します。 WordPressのお知らせ一覧ページは「投稿アーカイブ」のことです。投稿アーカイブは、一般的なホームページの場合...
あわせて読みたい
【WordPress】お知らせ一覧にカテゴリーを表示する方法【オリジナルテーマ】 WordPressのお知らせ一覧にカテゴリー名を表示させ、CSSで装飾を変更する方法を紹介します。 完成イメージ 完成イメージは下記のとおりで、各お知らせに対してカテゴリ...
あわせて読みたい
【WordPress】お知らせ一覧にNEWマークをつける方法【PHP】 お知らせ一覧や記事一覧の最新記事に「NEW」マークを付ける方法を紹介します。 PHP記述例 NEWマークをつけるコードはいくつかありますが、代表的なものを一つ紹介します...
あわせて読みたい
【WordPress】お知らせ一覧をトップページに作る方法【オリジナルテーマ】 この記事では、トップページにもお知らせ一覧の一部を載せる方法を紹介します。 完成イメージ 完成イメージを下の図にお示しします。つまり、コーポレートサイトで良く...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

■清水WEB制作代表
■コーディング:WordPress(オリジナルテーマ制作等)・HTML・Sass・FLOCSS・JavaScript(jQuery)等
■集客力:YouTube/Instagram/ブログでそれぞれ登録者数16000人/フォロワー13000人/月間最大アクセス50000PVの集客実績があります
■文章作成:博士号所有、会社員時代は科学雑誌に寄稿していたので文章作成も得意です
■写真技術:Amazon Kindle出版で、写真集・撮影編集解説書を5冊好評発売中です

目次