【WordPress 自作テーマの作り方】記事ページ/固定ページを作成する【002】

・single.php (個別記事)
・page.php (固定ページ)

どちらか1つを作れば、他方はすぐに作れると思います。「single.php」を作成することを前提で話を勧めます。

Twenty Fifteen — 無料の WordPress テーマ

を参考に型枠をつくるのがよいかと思います。

single.php

<?php get_header(); ?>
<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">

    <?php
    while ( have_posts() ) : the_post();
        //1記事表示部分
        get_template_part('content');

        //コメント部分
        if ( comments_open() || get_comments_number() ) :
            comments_template();
        endif;

        // 前/次 navigation.
        the_post_navigation( array( 'prev_text' => '前へ', 'next_text' => '次へ' ) );

        // End the loop.
        endwhile;
    ?>

</main><!-- .site-main -->
</div><!-- .content-area -->
<?php get_footer(); ?>

まず、single.php は上記のような構造になっています。

・ヘッダー部分の読みこみ(get_header()でheader.phpを読みこみ)
・記事本体の読みこみ(get_template_part( 'content')でcontent.phpを読みこみ)
・コメント部分の読みこみ(comments_template()でcomments.phpを読みこみ)
・フッター部分の読みこみ(get_footer()でfooter.phpを読みこみ)

関数リファレンス/have posts - WordPress Codex 日本語版
関数リファレンス/the post - WordPress Codex 日本語版
the_post_navigation() | Function | WordPress Developer Resources

関数リファレンス/comments open - WordPress Codex 日本語版
関数リファレンス/get comments number - WordPress Codex 日本語版

地道に調べれば、どうなっているかがわかるかと思います。

content.php

上記だけでは、記事の本体を表示する部分がないので、作成します。
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

    <header class="entry-header">
    <?php   //記事のタイトル
        the_title( '<h1 class="entry-title">', '</h1>' );   ?>
    </header><!-- .entry-header -->

    <div class="entry-content">
    <?php
        //記事の内容
        the_content();

        //1記事をページ分割する場合のページナビ
        wp_link_pages();
    ?>
    </div><!-- .entry-content -->

</article><!-- #post-## -->

テンプレートタグ/the title - WordPress Codex 日本語版
テンプレートタグ/the content - WordPress Codex 日本語版
テンプレートタグ/wp link pages - WordPress Codex 日本語版

content.php側も骨格はこんな感じになります。PHPをかいているというよりかは、テンプレートタグを使っていると考えて作るほうがよいかもと思います。

関連のある記事

スポンサーリンク

コメントを残す

メールアドレスは公開されません。
また、コメント欄には、必ず日本語を含めてください(スパム対策)。