サーバ移転とドメイン移管について、今後のためにメモっておきます。ついでにWordPressの設置についてもメモ。

超初心者の

サーバー移転とドメイン移管

WordPress「テンプレート」の優先順位

★更新:

WordPressの「テンプレート」と「パーツテンプレート」について、
また、「テンプレート」の種類と優先順位について、整理します。

「テンプレート」

WordPressで作るサイトは、「テンプレート」と呼ばれるPHPファイルによって、ブラウザにHTMLとして出力されます。
「テンプレート」の最も代表的なものが「index.php」。これが無いとテーマとしてWordPressに認識されないので必須。
極端な話、index.phpだけでサイトを作る事もできます。
が、実際は、投稿ページのアーカイブ(一覧)用のテンプレート「archive.php」が必要だったり、ページの用途によってテンプレートを用意する必要があります。

アーカイブページ用のテンプレート「archive.php」を作ると、自動的にアーカイブページの場合はコレを使って出力されます。これは「テンプレートの優先順位」が決まっているから。とても便利な仕組みです。「テンプレートの優先順位」はこのページの後半に記載)

「パーツテンプレート」

また、「テンプレート」内は、ブラウザで表示したときの共通部分(ヘッダー、フッター、サイドバーなど)を別ファイルにして呼び出します。
これが「パーツテンプレート」と呼ばれる、言わば構成部品。
こうしたほうが、1つのパーツテンプレートを修正するだけで全体に反映させられるなど、作業効率がアップします。

パーツテンプレートと、それを呼び出すテンプレートタグ

よく使われるヘッダー、サイドバー、フッター、コメント欄には、それぞれ
「header.php」「sidebar.php」「footer.php」「comments.php」というパーツテンプレート名が用意されています。

これらのパーツテンプレートは、
テンプレート内に以下のテンプレートタグで呼び出します。

  • header.phpは「get_header();」で呼び出す
  • footer.phpは「get_footer();」
  • sidebar.phpは「get_sidebar();」
  • comments.phpは「comments_template();」

このほかに、必要な場合は自由にパーツテンプレートを作る事ができ、
呼び出しは「get_template_part(‘パーツテンプレート名’);」というタグを使います。
(abcd.phpという自作パーツテンプレートなら「get_template_part(‘abcd’);」で呼び出す)

例として、このサイトではこのように分割しています。

<article id=”contents”>内では、単独記事の出力部分をさらにパーツテンプレート化しています。それらを読み込むテンプレート(index.php)のソースは下記。

<?php get_header(); ?>

<article id="contents">
<?php
if (have_posts()) : 
  while (have_posts()) :
    the_post();
    get_template_part('content');	
  endwhile;
endif;
?>
</article><!-- #contents END -->

<?php get_sidebar();?>
<?php get_footer();?>

テンプレートの種類と優先順位

テンプレートには「index.php」「archive.php」のほかに下記のモノがあります。

  • 「front-page.php」「home.php」(トップページ用)
  • 「page.php」(固定ページ用)
  • 「single.php」(投稿用)
  • 「category.php」(カテゴリー別アーカイブページ用)
  • 「search.php」(検索結果ページ用)
  • 「404.php」(404(file not found)ページ用)
  • 「date.php」(日付別アーカイブページ用)
  • 「tag.php」(タグ別アーカイブページ用)
  • 「author.php」(著者別アーカイブページ用)
  • 「taxonomy.php」(カスタム分類別アーカイブページ用)

それぞれ「スラッグ」や「ID」をつけて、特定の記事や、特定のアーカイブページの「専用テンプレート」にする事もできます。

これらのテンプレートには「優先順位」があり、優先度の高いものから先に使われるようになっています。
例えば固定ページの場合、page.phpを作れば、index.phpより優先度が高いので、こちらが自動的に使用されます。(下の表の*4)
page-スラッグ.phpを作れば、ある特定の固定ページでは、page.phpより優先度が高くなり、こちらが自動的に使われます。(下の表の*2)

例えば「page-abc.php」を作れば、スラッグを「abc」にした固定ページでは、「page.php」ではなくこっちが優先的に使われ、構成やデザインを変える事ができます。

各テンプレートの優先順位はこのようになっています。
★まずは、個別のページ

優先順位( 高い←← →→低い )
トップページ front-page.php
(固定ページの場合)
home.php
(投稿の場合)
トップが固定ページの場合、固定ページの優先順位のテンプレート*1〜*4 index.php
固定ページ カスタム
テンプレート
*1
page-[slug].php
*2
page-[ID].php
*3
page.php
*4
index.php
投稿 single-
[posttype].php
single.php index.php

★アーカイブ(一覧)ページ

優先順位( 高い←← →→低い )
カテゴリー別 category-
[slug].php
category-
[ID].php
category.php archive.php index.php
日付別 date.php archive.php index.php
タグ別 tag-[slug].php tag-[ID].php tag.php archive.php index.php
著者別 author-
[name].php
author-[ID].php author.php archive.php index.php
カスタム分類 taxonomy-
[taxonomy]-
[slug].php
taxonomy-
[taxonomy].php
taxonomy.php archive.php index.php

★その他のページ

優先順位( 高い←← →→低い )
検索結果 search.php index.php
404 404.php index.php

ちなみに、このサイトは「index.php」「archive.php」「search.php」の3つのテンプレートでできています。必要最低限ですね。
トップページ、投稿、固定ページは、まったく同じレイアウトなので、すべて「index.php」で出力されます。
さすがにアーカイブページや、検索結果ページは、レイアウトを変えなければならないので、それぞれ「archive.php」「search.php」を作りました。
それらは「index.php」より優先度が高いので、自動的にそれらに切り替わって表示されているわけです。