前回の続きです。
今回は投稿を表示する機能についてやって行きたいと思います。
つまりテンプレートファイルで言えば single.php になりますね。
構造
Wordpressの標準テーマの一つである「Twenty Twenty-One」等のコードを参考にしました。
執筆者の情報や前後の記事へのナビゲーションについては、
あまり必要性を感じてなかったりするのですが、とりあえずやってみることにしました。
特に執筆者は管理人である自分一人しか居ないので(^_^;)
あと、アイキャッチ画像を記事の本文中に表示させるかどうか悩んだのですが、
投稿一覧で表示させているので、あえてやる必要はないかなと思い止めにしました。
single.php のコード
ということで single.php のコードは以下のようになりました。
<?php
get_header();
while ( have_posts() ) {
the_post();
get_template_part( 'parts/content-single' );
if ( comments_open() || get_comments_number() ) {
comments_template();
}
get_template_part( 'parts/post-navigation' );
}
get_footer();
例のごとく、テンプレート部品で構成することで見通しを良くするようにしてみました。
記事内容は parts/content-single.php で、前後の記事へのナビゲーションは parts/post-navigation.php でやるように分けました。
コメントについては、comments_open() でコメントが許可されているかどうか、
get_comments_number() でコメントがあるかどうかを調べて、
そうであるなら comments template() でコメントのテンプレートを実行します。
parts/content-single.php のコード
parts/content-single.php のコードは以下のようになりました。
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header"><?php get_template_part( 'parts/entry-header' ); ?></header>
<div class="entry-content"><?php get_template_part( 'parts/entry-content' ); ?></div>
<footer class="entry-footer"><?php get_template_part( 'parts/entry-footer' ); ?></footer>
</article>
ヘッダー、本文、フッターはそれぞれさらにテンプレート部品化します。
<article> のIDとクラスはそれぞれ、the_ID() 及び post_class() で取得できます。
parts/post-navigation.php のコード
parts/post-navigation.php のコードは以下のようになりました。
ズバリ the_post_navigation() で出来てしまいます。簡単ですね。
テンプレート部品化する意味がないくらいに短いことになりました(^_^;)
<?php the_post_navigation(); ?>
次回に続きます。