今回はWordPressでカスタム投稿タイプの個別記事ページを作る方法を紹介します。
ファイルを作る
カスタム投稿タイプの個別記事のファイルの名前は「single-[カスタム投稿タイプ名].php」になります。
これでWordPressが勝手に「[カスタム投稿タイプ名]の個別記事ページだな」と認識してくれます。
ちなみにsingle.phpのテンプレ階層はこんな感じです。
- single-[カスタム投稿タイプ名].php
- single.php
- index.php
投稿の個別記事ページとカスタム投稿の個別記事ページが同じレイアウトだったらsingle.phpで統一するといいと思います。
ループ処理をする
あとは通常のsingle.phpと同じようにループ処理をします。
ちなみにループはサブループではなくメインループを使います!「カスタム投稿タイプだからサブループかな?」と思うかもですが、メインループじゃないと処理がおかしくなるので気をつけてください。
コードはこんな感じになると思います。
<main class="main">
<?php
if ( have_posts() ):
while ( have_posts() ): the_post();
?>
<article class="article">
<div class="article-info">
<time datetime="<?php the_time( 'Y-m-d' ); ?>"><?php the_time( 'Y-m-d' ); ?></time>
<?php
$terms = get_the_terms( 'news_category' );
foreach( $terms as $term ):
?>
<span class="article-category"><?php echo $term->name; ?></span>
<?php endforeach; ?>
</div>
<h2 class="article-title"><?php the_title(); ?></h2>
<div class="article-content">
<?php the_content(); ?>
</div>
</article>
<?php endwhile;
endif;
?>
</main>
なお、
<?php
$terms = get_the_terms( 'news_category' );
foreach( $terms as $term ):
?>
<span class="article-category"><?php echo $term->name; ?></span>
<?php endforeach; ?>
この部分は記事に属するカスタムタクソノミーのタームを全て表示する処理です。
get_the_terms()
は投稿に割り当てられたタームを取得する関数です。これをforeachで処理することで記事に属するタームを全て表示させます。
まとめ
注意点はsingle-[カスタム投稿タイプ名]というファイル名にすることと、ループはメインループを使うことくらいですね。
single.phpがあればそれをコピペしてちょっと変えるだけでもできちゃうので試してみてくださいね!