オリジナルのtheme(テーマ)を作る15:パーツごとに分ける(共通化)

これまで、ひたすらindex.phpに書いてきましたが・・(笑)
header.phpとfooter.phpを分けたいなーと思います。

いよいよwordpressらしく!なってきましたね(*´ω`)

まず、空のheader.phpとfooter.phpを作って、FTPでアップロードします。
※空のままでOKよ

テーマの編集画面から、index.phpのヘッダー部分をコピーして、header.phpに貼り付けます。
同じように、index.phpのフッター部分をコピーして、footer.phpに貼り付けます。

※ヘッダー部分は、index.phpの先頭(<!DOCTYPE html>)からメイン(コンテンツ)部分の手前まで。
※フッター部分は、index.phpのメイン(コンテンツ)部分の下から最下部(</html>)まで。

<?php get_header(); ?>index.phpのヘッダー部分を上記の関数に書き換えます。
この記述部分にheader.phpの内容が組み込まれます。
<?php get_footer(); ?>index.phpのフッター部分を上記の関数に書き換えます。
この記述部分にfooter.phpの内容が組み込まれます。

パーツ分けできたら、ちゃんと表示されているか確認してみましょうー!
無事に、header.phpとfooter.phpのパーツ分けができたかな(^^)

wp_head関数

<head>
    ........
    <?php wp_head(); ?>
</head>

header.phpに上記のようにwp_head関数を入れます。

wp_footer関数

........
    <?php wp_footer(); ?>
</body>

footer.phpに上記のようにwp_footer関数を入れます。
Wordpressで基本的に読み込まれているJavaScriptやcssなど、ヘッダー部分やフッター部分に自動的に組み込まれます。

<?php body_class(); ?>

<body <?php body_class(); ?>>

bodyタグには、<?php body_class(); ?>を入れます。
body内で使われるWordpressのclassなどが自動的に組み込まれます。

<?php get_template_part('xxx','yyy'); ?>共通化するテンプレートは主にheader.php、sidebar.php、footer.phpなどがありますが、これらの他にテンプレートパーツが作れます。
テンプレートパーツは、ヘッダーやフッターとは別に、ページの一部分だけをテンプレートにして、他のテンプレートに組み込むものです。
たとえば、投稿のループ部分を共通化したい場合、loop.phpというテンプレートパーツのファイルを作り、組み込みたい位置に下記の記述をします。

<?php get_template_part('loop'); ?>

loop-top.php、loop-sub.phpのように、複数のテンプレートパーツを使い分ける場合の書き方は以下のようになります。

<?php get_template_part('loop', 'top'); ?>
<?php get_template_part('loop', 'sub'); ?>

ヘッダーを複数作ってページによって切り替えるヘッダーを複数作って、トップページとその他のページで表示するヘッダーを分ける、といったことも可能です。
その場合、たとえばheader-top.phpと、header-other.phpのように2種類テンプレートを用意します。
これらのヘッダーを組み込むときは、

<?php get_header('top'); ?>
<?php get_header('other'); ?>

のように、テンプレートの名前を入れます。
sidebar.phpやfooter.phpの場合も同様です。

テンプレートの種類(個々のページ)
トップページのテンプレート階層
front-page.php トップページを出力
home.php トップページを出力
index.php すべてのページを出力するようにできる
投稿ページのテンプレート階層
single-post.php 個々の投稿ページを出力
single.php 個々の投稿ページを出力
singular.php 個々の投稿ページと固定ページを出力(WP4.3以降)
index.php すべてのページを出力するようにできる
固定ページのテンプレート階層
カスタムテンプレート.php 個々の固定ページを出力
page-スラッグ.php 特定のスラッグの固定ページを出力
page-ID.php 特定のIDの固定ページを出力
page.php 個々の固定ページを出力
singular.php 個々の投稿ページと固定ページを出力(WP4.3以降)
index.php すべてのページを出力するようにできる
カテゴリーアーカイブページのテンプレート階層
category-スラッグ.php 特定のスラッグのカテゴリーアーカイブページを出力
category-ID.php 特定のIDのカテゴリーアーカイブページを出力
category.php カテゴリーごとのアーカイブページを出力
archive.php 様々なアーカイブ系ページを出力
index.php すべてのページを出力するようにできる
年別・月別・日別アーカイブページのテンプレート階層
date.php 年月日ごと等のアーカイブページを出力
archive.php 様々なアーカイブ系ページを出力
index.php すべてのページを出力するようにできる
タグアーカイブページのテンプレート階層
tag-スラッグ.php 特定のスラッグのタグアーカイブページを出力
tag-ID.php 特定のIDのタグアーカイブページを出力
tag.php タグごとのアーカイブページを出力
archive.php 様々なアーカイブ系ページを出力
index.php すべてのページを出力するようにできる
ユーザーアーカイブページのテンプレート階層
aothor-ナイスネーム.php 特定のナイスネームのユーザーアーカイブページを出力
aothor-ID.php 特定のIDのユーザーアーカイブページを出力
aothor.php ユーザーごとのアーカイブページを出力
archive.php 様々なアーカイブページを出力
index.php すべてのページを出力するようにできる
その他のページのテンプレート
search.php 検索結果のページを出力
404.php Not Foundページを出力
index.php すべてのページを出力するようにできる
テンプレートの種類(共通部分を出力)
header.php ヘッダー部分を出力
footer.php フッター部分を出力
sidebar.php サイドバーを出力
searchform.php 検索フォームを出力
comments.php コメント一覧、コメント入力フォームを出力
ページの種類(一部のページのIDやスラッグで出力を分ける)
固定ページ page-ID.php、page-スラッグ.php
カテゴリーごとのアーカイブページ category-ID.php、category-スラッグ.php
タグごとのアーカイブページ tag-ID.php、tag-スラッグ.php
ユーザーごとのアーカイブページ author-ID.php、author-ナイスネーム.php

コメントは受け付けていません。