みなさんこんにちは!
WordPress自作テーマ開発の記事も第6回となりました。
現在完成しているページは、トップページ、投稿ページ、固定投稿ページです。
今日皆さんと一緒に作成するページはアーカイブページです。
まだ前回までの記事を見ていない方は以下のリンクからご覧ください。
【WordPress自作テーマ開発②】自作テーマ制作を効率的に行うための準備
【WordPress自作テーマ開発④】下層ページを作ろう「投稿ページ編」
【WordPress自作テーマ開発⑤】下層ページを作ろう「固定ページ編」
それでは作成していきましょう!
アーカイブページを作ろう
アーカイブページは、カテゴリーや日付、タグなど記事の分類ことに表示する役割を持つページでブログサイトには必須のページになっています。
カテゴリーや、タグ、日付などのアーカイブページはテーマファイルの中のarchive.phpが出力をしています。
そのため、変更を加えたいときはarchive.phpを編集することで実現できます。
現在の表示を確認
まずは、現在の表示の確認をしていきたいと思います。
現在の表示の状態は上の画像の通りです。
トップページのサイドバーに表示されるカテゴリーの項目をクリックして表示しています。
表示の内容としては、同じカテゴリーを持つ記事の画像、タイトル、投稿内容全てを表示している状態です。
これではユーザーが1記事づつ全ての記事を読まなければならずお目当ての記事を効率よく探すことができません。
完成図を確認
次に完成図を確認します。
以下が完成図の画像です。
レイアウトはパンくずリストを表示し、記事の分類をタイトルとして表示して、その後3カラムで記事を整列させています。
サイドバーを外すことでカラム表示している記事だけにユーザーの目を惹きつける様にしています。
編集前のカテゴリーページよりもとてもスッキリし目的の記事を見つけやすくなったと思います。
_s(underscores)ダウンロード初期状態のarchive.phpを確認
アーカイブページを作成する前に_s(underscores)ダウンロード初期状態に書かれているarchive.phpのコードを確認します。
以下がarchive.phpに書かれているコードです。
<?php
/**
* The template for displaying archive pages
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/
*
* @package BlogCreateChallenge
*/
get_header();//header.phpを呼び出しその内容を表示しヘッダーを出力
?>
<main id="primary" class="site-main">
<?php if ( have_posts() ) : ?><!--if文開始、記事があれば以下の内容を実行-->
<header class="page-header">
<?php
the_archive_title( '<h1 class="page-title">', '</h1>' );//アーカイブのタイトルをH1タグで出力
the_archive_description( '<div class="archive-description">', '</div>' );//アーカイブの説明をdivタグ内に表示する
?>
</header><!-- .page-header -->
<?php
/* Start the Loop */
while ( have_posts() ) ://while文で以下の内容を繰り返す
the_post();
get_template_part( 'template-parts/content', get_post_type() );//get_template_part関数でtemplate-partsディレクトリ内のcontent.phpを呼び出しその内容を表示
endwhile;//while文終了
the_posts_navigation();//ページャーを表示
else ://記事がない場合は以下を実行
get_template_part( 'template-parts/content', 'none' );//get_template_part関数でtemplate-partsディレクトリ内のcontent-none.phpを呼び出しその内容を表示
endif;//if文終了
?>
</main>
<?php
get_sidebar();//サイドバー出力(sideber.phpを呼び出しその内容を出力)
get_footer();//フッター出力(footer.phpを呼び出しその内容を出力)
コードの意味などは上記のコード内のコメントをご覧ください。
「トップページを作ろう」の工程でヘッダー、フッターは編集済みですので今回編集するのは、コンテンツ部分だけということになります。
archive.phpにコードを追加
それでは、アーカイブページを出力しているarchive.phpにコードを書いていきましょう。
以下が追記、削除したコードになります。
<?php get_header(); ?><!--ヘッダー出力-->
<div class="ly_cont ly_cont__col"><!--コンテンツ部分開始-->
<main class="ly_cont_main">
<div class="post-breadcrumb">
<?php output_breadcrumb(); ?><!--パンくずリスト表示-->
</div>
<?php if ( have_posts() ) : ?><!--if文(記事があれば以下の内容を実行)-->
<?php the_archive_title( '<h1>', '</h1>' ); ?><!--アーカイブのタイトルをh1タグで表示-->
<div class="ly_cont_card bl_cardUnit bl_cardUnit__col4">
<?php while ( have_posts() ) : the_post();//while文で以下の内容を記事がある分だけ繰り返し実行
get_template_part( 'template-parts/content-archive');//get_template_part関数でtemplate-partsディレクトリ内のcontent-archive.phpを呼び出しその内容を出力
endwhile;//while終了
endif;//if文終了
?>
<?php the_posts_pagination(//ページャーを出力
array(
'mid_size' => 2, // 現在ページの左右に表示するページ番号の数
'prev_next' => true, // 「前へ」「次へ」のリンクを表示する場合はtrue
'prev_text' => __( '前へ'), // 「前へ」リンクのテキスト
'next_text' => __( '次へ'), // 「次へ」リンクのテキスト
'type' => 'list', // 戻り値の指定 (plain/list)
)
); ?>
</main>
</div><!--コンテンツ部分終了-->
<?php get_footer();?><!--フッター出力-->
コードの横にざっくりとコードの意味や役割を表すコメントを書いておりますのでご覧ください。
また、ポイントとなるコードのみ説明をします。
追加したコードの説明
●5行目〜7行目(上記のコード内での行数)
<?php output_breadcrumb(); ?>
このコードは前々回の投稿ページを作成する際に設置したパンくずリストを表示する関数です。
パンくずリストは以下の様なものです。
この「output_breadcrumb();」一文はfunctions.phpで定義したパンくずリストを表示させる関数を実行するものです。
functions.phpなどに記述した内容は前々回のWordPress自作テーマ開発④】下層ページを作ろう「投稿ページ編」をご覧ください。
●12行目
get_template_part( 'template-parts/content-archive');
get_template_partはwordpressの関数です。
カッコ内にパスを書き特定のファイルを読み込みます。
今回はtemplate-partsディレクトリ内のcontent-archive.phpを読み込んでいます。
しかし、まだ、content-archive.phpファイルがありませんので作ってコードを書いていきたいと思います。
content-archive.phpを作成しコードを記述
archive.phpの追記でget_template_part関数で読み込んだcontent-archive.phpを作成しコードを記述したいと思います。
_s(underscores)のテーマファイル内の「template-parts」というディレクトリ内に「content-archive.php」というなまえでphpファイルを作成します。
その中の記述がアーカイブページのコンテンツ部分の主を担います。
content-archive.phpファイルを作成できたら、以下のコードを記述しましょう。
<article class="bl_card">
<a href="<?php the_permalink(); ?>" class="bl_card_link"><!--カード全体をaタグで囲みリンクをつける-->
<figure class="bl_card_imgWrapper">
<img src="<?php the_post_thumbnail_url(); ?>" alt=""><!--記事のアイキャッチを表示-->
</figure>
<div class="bl_card_body">
<?php the_title( '<h3 class="bl_card_ttl">', '</h3>' );?><!--記事のタイトルを出力-->
<span class="entry-date"><?php echo get_the_date(); ?></span><!--記事の投稿日を出力-->
<p class="bl_card_txt"><?php echo get_the_excerpt(); ?></p><!--記事の抜粋を出力-->
<a href="<?php the_permalink(); ?>">続きを読む</a><!--抜粋の後に続きを読むのリンクを設置-->
</div>
</a>
</article>
コードの説明はコード横のコメントをご覧ください。
表示しているものは、記事のアイキャッチ、記事タイトル、、記事の投稿日、記事の抜粋です。
トップページのカード型の表示と同じ内容を出力しています。
表示の確認
archive.phpとcontent-archive.phpの追記ができましたので、表示の確認をしてみましょう!
以下の画像の様な表示になっていればOKです!
まとめ
以上でアーカイブページの完成です。
パーツファイルとしてcontent-archive.phpを作成しarchive.phpの内容をスッキリすることができました。
ベースとなるトップページを作成済みですのでそれに準じたコードを書くだけで完成してしまいましたね。
最後まで読んでいただきありがとうございました。
次回の記事では、検索結果を表示するページ、検索フォームなどサイト内検索に関連するページを作成していきたいと思います。
では、次回の記事でお会いしましょう!