WordPressのテンプレートファイルは、いろいろな方法で作成できるため、カスタマイズするときの調査が難しくなっています。管理画面で設定できる表示設定と、固定ページや投稿ページを表示するために使用されるテンプレートファイルなどの関係について調べてみました。調査したのは次に示すWordpressのフリーのテーマ「Responsive」です。トップページを作成し、固定ページとブログのページには右側にサイドバーを付けました。
[responsive][/responsive]
次のように管理画面の表示設定を選択し、「フロントページの表示」の「最新の投稿」にチェックを付けました。
[responsive][/responsive]
トップページの表示
「http://example.net/」のようなURLのトップページを表示させると、front-page.phpがで実行されます。このファイルを実行すると管理画面の外観のデータ設定の「ホームページ」の「ヘッドライン」「サブヘッドライン」「コンテンツエリア」で設定された内容がトップページに表示されます。管理画面の外観のデータ設定を次に示します。
[responsive][/responsive]
また、get_sidebar(‘home’)によりサイドバー画面を呼び出しています。この呼び出しにより、ホームウィジェットをトップページに設定します。ホームウィジットは、次に示す管理画面の外観のウィジットの「ホームページウィジェット1」、「ホームページウィジェット2」、「ホームページウィジェット3」により設定できます。
front-page.phpが存在しないときは、home.phpが呼び出され、表示は投稿の一覧表が表示され、トップページは表示されません。
固定ページ
管理画面の固定ページの編集の右側に表示されるテンプレートに従って作成する。選択できるテンプレートを次に示す。
[responsive][/responsive]
今回は、固定ページにテンプレートの「コンテンツ/サイドバー」を選択しました。このテンプレートファイルは「content-sidebar-page.php」になります。
content-sidebar-page.php
・ ・ <?php while (have_posts()) : the_post(); ?> <?php responsive_entry_before(); ?> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <?php responsive_entry_top(); ?> <?php get_template_part( 'post-meta-page' ); ?> <div class="post-entry"> <?php the_content(__('Read more ›', 'responsive')); ?> <?php wp_link_pages(array('before' => '<div class="pagination">' . __('Pages:', 'responsive'), 'after' => '</div>')); ?> </div><!-- end of .post-entry --> <?php get_template_part( 'post-data' ); ?> <?php responsive_entry_bottom(); ?> </div><!-- end of #post-<?php the_ID(); ?> --> <?php responsive_entry_after(); ?> <?php responsive_comments_before(); ?> <?php comments_template( '', true ); ?> <?php responsive_comments_after(); ?> <?php endwhile; ・ ・
右側にサイドバーを付けたため、php get_sidebar(‘right’)でsidebar-right.phpが呼び出されます。右側サイドバーに表示する内容は、管理画面の外観のウィジェットの「右サイドバー」により、次にように設定できます。
[responsive][/responsive]
1.当たり前の話ですが、front-page.phpが無くても、直接固定ページのURLを入力すれば、content-sidebar-page.phpさえあれば固定ページは表示します。
2.content-sidebar-page.phpが存在しないときは、page.phpが使用されますが、「ホーム>お問合せ」などのパンくずリストは表示されません。
投稿ページ
blog.phpで走行ページの一覧表が表示されます。一覧表に表示されている投稿をクリックすると、single.phpが実行されて、投稿の本文が表示されます。
blog.php
・ ・ while ( $blog_query->have_posts() ) : $blog_query->the_post(); ?> <?php responsive_entry_before(); ?> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <?php responsive_entry_top(); ?> <?php get_template_part( 'post-meta' ); ?> <div class="post-entry"> <?php if ( has_post_thumbnail()) : ?> <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" > <?php the_post_thumbnail(); ?> </a> <?php endif; ?> <?php the_content(__('Read more ›', 'responsive')); ?> <?php wp_link_pages(array('before' => '<div class="pagination">' . __('Pages:', 'responsive'), 'after' => '</div>')); ?> </div><!-- end of .post-entry --> <?php get_template_part( 'post-data' ); ?> <?php responsive_entry_bottom(); ?> </div><!-- end of #post-<?php the_ID(); ?> --> <?php responsive_entry_after(); ?> <?php endwhile; ・ ・
blog.phpが存在しない場合、index.phpが実行されますが、投稿の一覧表は表示されません。