目次
記事一覧ページの機能
この記事で紹介する記事一覧ページ(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管理画面>設定>パーマリンク>「変更を保存」をクリック
詳しくは下記の記事をご参照下さい。
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】お知らせ一覧をトップページに作る方法【オリジナルテーマ】
この記事では、トップページにもお知らせ一覧の一部を載せる方法を紹介します。 完成イメージ 完成イメージを下の図にお示しします。つまり、コーポレートサイトで良く...