【0から学ぶWordPress】カスタム投稿を固定ページに出力する

カスタム投稿を個別ページ

カスタム投稿で新しく作った記事を個別にページに出力する

カスタム投稿で新しく作った記事を1ページとして出力する方法です

カスタム投稿についてはこちらをご覧ください

個別ページの表示はsingle.phpになりますので、まずは
single.phpをカスタム投稿用に複製しましょう!

FTPなどで使用しているテーマのフォルダの中に
single.phpがあればそれをそのまま複製してください
無ければ作りましょう。

複製したファイル名を
single.php→single-blog.php(カスタム投稿名)
に変更します。

こうすることによってカスタム投稿(blog)は
single.phpより先にsingle-blog.phpを先に読み込みにいき
結果、blogの個別ページとなります。

これはテンプレート階層には決まりがあるのですが
これはまた別の記事に書こうかと思います💦

single.phpと同じデザインになる場合は複製しなくても
single.phpがblogのカスタム投稿のページとして認識しますので
そのままでも使えますが、基本的に書く内容は変わることが多いと思うので
-(ハイフン)を付けてカスタム投稿名にて新しく指定してあげましょう。

single.phpを複製後はどうするか?

さて、カスタム投稿用に固定ページを
single-blog.phpとして作成したら今度は中身を書いていきましょう

single.phpは基本的に投稿の最新記事を読み込むようになってます

では一体どうすればカスタム投稿用の記事を読み込むかというと
基本的にはsingle.phpと書いてる内容は一緒ですが、少し付け加える必要があります。

これはあくまでもサンプルのソースですが
一通り抜き出せると思います。
ヘッダー、サイドバー、フッターも追記してます。

<?php get_header(); ?>

<main>
    <?php if(have_posts()): while(have_posts()):the_post(); ?>
    <div class="container">
        <div class="inner">
            <div class="blog_detail row">
                <div class="col-md-8 mx-auto">
                    <span class="blog_detail_category_list"><?php echo get_the_term_list( $post->ID, 'blog_category' ); ?></span>
                    <h1><?php the_title(); ?></h1>
                    <span class="blog_time">
                        <time datetime="<?php the_time('Y-m-d'); ?>"><?php the_time('Y.m.d'); ?></time>
                    </span>
                    <div class="thumb ">
                        <?php the_post_thumbnail('large'); ?>
                    </div>
                    <div class="post-main"><?php the_content(''); ?></div>
                </div><!--col-md-8-->
                <div class="col-md-4 mx-auto">
                    <?php get_sidebar('blog'); ?>
                </div><!--col-md-4-->
            </div><!--blog_detail row -->
            <?php previous_post_link('%link','古い記事へ'); ?>
            <?php next_post_link('%link','新しい記事へ'); ?>
        </div><!--inner-->
    </div>
    <?php endwhile; endif; ?>
</main>
<?php wp_reset_postdata(); ?>

<?php get_footer(); ?>​