HOME技術WordPressWordPressでテーマを自作するときに必要なphpファイル

WordPressでテーマを自作するときに必要なphpファイル

wordpress-php

最低限必要なファイル

WordPressでウェブサイトを表示するために最低限必要なファイルは、index.phpとstyle.cssです。この2つのファイルがあればWordPressを動作させることができます。
しかし、カテゴリの一覧ページと単体の記事を表示するページは記述が異なります。index.phpだけだとそういったケースに対応することが難しくなるため、WordPressでは表示内容の種類によってphpファイルを用意することができます。

ホームページ(フロントページ)

index.php

index.phpは該当するphpファイルがない場合に、代替として使われます。最低限必要なファイルの一つです。

home.php

トップページ用のphpファイルです。トップページはほかのページと違う配置の内容にしたい場合には、home.phpを設定します。
front-page.phpとの違いは、「設定」→「表示設定」で「フロントページの表示」を「固定ページ」にして、「フロントページ」の設定をしていない場合に、home.phpが適用されます。
固定ページをトップページに用意するつもりがない場合には、home.phpを用意した方がいいでしょう。

front-page.php

「設定」→「表示設定」→「フロントページの表示」で「フロントページ」を設定している場合に適用されます。フロントページの指定をしていない場合には、home.phpがあればそれが適用されます。

個別投稿ページ(単一記事)

index.php

singular.phpの設定をしていない場合には、index.phpが適用されます。

singular.php

single.php(記事を表示するファイル)とpage.php(固定ページを表示するファイル)をsingular.phpにまとめることができます。single.phpもpage.phpも単一の記事を表示するためのファイルなので、同じ記述になる場合には、singular.phpを使用します。
必要に応じて用意しましょう。single.php、page.phpそれぞれを異なるデザインにしたい場合には、singular.phpを用意する必要はありません。

single.php

単一記事を表示するphpです。ユーザが最終的に読む記事ページのデザインを決めるphpなので、なるべく設定しましょう。

single-$posttype.php

ポストタイプとは、投稿した記事の種類のことです。既定のポストタイプには、postとpageがあります。postは投稿ページ、pageは固定ページの記事です。このほか、任意のポストタイプを設定した場合には、そのポストタイプをハイフンの後につなげることで、適用させることができます。

固定ページ

index.php

singular.phpがない場合に適用されます。

singular.php

page.phpがない場合に適用されます。

page.php

page-$id.phpがない場合に適用されます。固定ページを統一のデザインにしたい場合には、page.phpを用意します。

page-$id.php

固定ページの中でも特定のIDのページごとにデザインをわけたい場合には、page-$id.phpを用意します。

page-$slug.php

固定ページの中でも特定のスラッグごとにデザインをわけたい場合には、page-$slug.phpを用意します。

カテゴリページ

paged.php

archive.phpがなく、かつis_paged()がtrueの場合に適用されます。使い道としてはリストページの最初のページと2ページ目とで表現を変えたい場合などです(1ページ目に説明文を表示し、2ページ目以降は非表示にするなど)。
2ページ目を変更する表現はphpで設定することも可能なので、paged.phpを設定する必要はあまりないかもしれません。

archive.php

category.phpがない場合に適用されます。

category.php

カテゴリを選択したときに適用されるphpファイルです。通常、カテゴリごとにデザインを変える必要がなければ、category.phpを設定しておけばいいでしょう。
比較的利用頻度の高いphpファイルです。

category-$id.php

特定のカテゴリにのみ適用されるphpファイルです。カテゴリのIDは、「投稿」→「カテゴリ」から、任意のカテゴリをクリックして、URL欄の「tag_ID=数字」の数字です。この数字が例えば1ならば、category-1.phpと書きます。
特定のカテゴリにのみ適用させたい場合にはこのphpファイルを用意しましょう。例えば、カテゴリトップページに、それぞれのカテゴリの説明文を表示しておきたい場合には、idごとにphpファイルを用意する必要性が生じます。
特定のカテゴリではなく、どのカテゴリを表示しても同じテンプレートにしたい場合は、category.phpを設定します。

category-$slug.php

カテゴリーのうち、特定のスラッグに対して適用されます。

タグ表示

index.php

archive.phpがない場合に適用されます。

archive.php

tag.phpがない場合に適用されます。

tag.php

tag-$id.php

タグを設定した場合に、タグにはidが割り当てられます。このid番号を「tag-」のあとにつけたphpファイルは、そのタグを表示したときのみ適用されます。

tag-$slug.php

スラッグとは、投稿した記事やカテゴリに対して、その記事の任意のURLを設定した際の文字列のことです。例えばtextという文字列ならば、tag-text.phpとなります。

カスタム分類表示

index.php

archive.phpがない場合に適用されます。

archive.php

taxonomy.phpがない場合に適用されます。

taxonomy.php

taxonomyとは分類のことです。通常、分類には「固定ページ」「投稿ページ」がありますが、これにオリジナルのカテゴリを追加したものをタクソノミーといいます。タクソノミー自体はテーマ内において自分で設定したりプラグインを使わないと設定することはできません。
タクソノミーを設定している場合、taxonomy.phpがあれば、カスタムタクソノミーを設定したページに適用されます。

taxonomy-$taxonomy.php

自作したカスタムタクソノミーの分類ごとにテンプレートを使用したい場合には、分類した名称を「taxonomy-」のあとに続けたphpファイルを作成すると、適用されます。

taxonomy-$taxonomy-$term.php

カスタムタクソノミーにはさらに、タグを設定することができます。その場合には、「taxonomy-タクソノミー名-タグ名.php」というphpファイルがあれば、適用されます。

カスタム投稿タイプ表示

index.php

archive.phpがない場合に適用されます。

archive.php

archive-$posttype.phpがない場合に適用されます。

archive-$posttype.php

$posttypeとは、投稿タイプのことです。投稿タイプとは、投稿記事の種類のことで、通常の投稿の投稿タイプは、post、固定ページはpage、添付ファイルはattachmentといったものがあります。
この投稿タイプを「archive-」のあとに記載したphpファイルは、アーカイブのインデックスページの表示の際に、該当の投稿タイプである場合に適用されます。

作成者表示

index.php

archive.phpがない場合に適用されます。

archive.php

author.phpがない場合に適用されます。

author.php

WordPressでは記事を投稿したユーザー別に、記事一覧を表示することができます。投稿者のアーカイブページを表示するリンクをクリックした場合に適用されるのが、author.phpです。
なお、投稿者のアーカイブページへのリンクを表示するには、<?php the_author_posts_link(); ?>とします。
また、複数の投稿者がいる場合、リストで全投稿者のアーカイブページへのリンクを表示するには、<?php wp_list_authors(); ?>と書きます。

author-$id.php

ユーザーを複数設定している場合には、そのユーザーごとにIDが割り振られています。そのIDを割り付けた、author-[id].phpを用意しておくと、そのユーザーの記事一覧を表示するときに適用されます。

author-$nicename.php

nicenameとはユーザーに割り当てたニックネームのことです。ニックネームがedyだった場合には、author-edy.phpというphpファイルを用意しておけば、edyの投稿記事アーカイブページを表示するときに適用させることができます。

日付別表示

index.php

archive.phpがない場合に適用されます。

archive.php

date.phpがない場合に適用されます。

date.php

カレンダーなどの日付をクリックしたときに表示される日付アーカイブのためのphpです。
カレンダーを表示するのであれば、用意しておいたほうがいいでしょう。

検索結果表示

index.php

search.phpがない場合に適用されます。

search.php

検索結果を表示するphpファイルです。
検索結果を表示するためには特別にコードを書く必要があるため、search.phpは別途用意しておきたいファイルの一つです。

エラー表示

index.php

404.phpがない場合に適用されます。

404.php

404エラー表示される(そのページがない)場合に表示するphpファイルです。404.phpをあらかじめ用意しておくことで、エラーページも同じテーマで表すことができます。
用意しておきたいphpファイルです。

添付ファイル表示

index.php

singular.phpがない場合に適用されます。

singular.php

single.phpがない場合に適用されます。

single.php

attachment.phpがない場合に適用されます。

attachment.php

WordPressでは、WordPress内に追加した画像やメディアファイルは、個別のページとして表示することができます。attachment.phpはその個別ページを表示する際に適用されるファイルです。

$mimetype-$subtype.php

個別の添付ファイルページを表示する際に、その添付ファイルのMIMEタイプによって適用するphpファイルを分けることができます。
MIMEタイプとは、text/plain、text/html、text/xml、text/javascript、text/vbscript、text/css、image/gif、image/jpeg、image/png、application/x-httpd-cgi、application/msword、application/pdfなどです。
スラッシュの前が$mimetypeで後が$subtypeを示します。

$subtype.php

個別の添付ファイルページを表示する際に、MIMEタイプのサブタイプのみを対象として適用させることができるphpファイルです。

$mimetype.php

個別の添付ファイルページを表示する際に、その添付ファイルのMIMEタイプによって適用するphpファイルを分けることができます。
MIMEタイプとは、例えば、画像(image)、映像(video)、アプリ(application)、テキスト(text、plain、textplain)などです。

特殊なphpファイル

functions.php

WordPressで使う関数を記述しておけば、ほかのphpファイルから参照できるようになります。

また、既存のプラグインに使われている関数を修正することもできます。既存のプラグインは、直接プラグインファイルを修正することもできますが、そうするとプラグインを更新したときに自身で修正した部分は上書きされてしまいます。functions.phpに記述しておけばプラグインを更新しても上書きされることはありません。ただし、WordPressを更新した場合には、上書きされる恐れがあるので事前にfunctions.phpのバックアップを取っておきましょう(私の経験では今まで上書きされたことはありませんが)。

header.php

ヘッダー部分のみを記載し、各phpファイルに
<?php get_header(); ?>
と記述しておくことで、読み込ませることができます。
多くの場合ヘッダーやフッターは同じ記述になるため、ヘッダーを変更する場合には、header.phpの内容だけを書き換えれば、すべてのphpファイルに適用させることができます。

footer.php

フッター部分のみを記載し、各phpファイルに
<?php get_footer(); ?>
と記述しておくことで、読み込ませることができます。

sidebar.php

サイドバーのみを記載し、各phpファイルに
<?php get_sidebar(); ?>
と記述しておくことで、読み込ませることができます。
なお、サイドバーが複数ある場合には、「sidebar-1.php」もしくは「sidebar-name.php」というファイルを作成し、各phpファイルに
<?php get_sidebar(1); ?>
もしくは
<?php get_sidebar(‘name’) ?>
と記述することで読み込ませることができます。
それ以外には、以下の「任意の名称.php」を使うこともできます。

comments.php

コメントを出力するためのphpパーツです。
<?php comments_template(); ?>
と記載すると、コメントを出力させることができます。
コメントを出力できるのは、投稿記事か固定記事のみです。アーカイブページなどに出力しようとしても出力されません。

comments-popup.php

例えば、index.php?comments-popup=[記事のID]のようなリンクを設定した際に、そのリンクをクリックし、かつ<head>内に<?php comment_popup_script(); ?>という記述があり、また記事ループ内に<?php comments_popup_link(); ?>が記述されている場合、コメントがあれば適用されます。
comments-popup.phpはコメント欄のみを別ウィンドウでポップアップ表示させたいときに使用します。あまり使うことはないでしょう。

searchform.php

検索窓を表示するphpのパーツです。
<?php get_search_form(); ?>
で、表示させることができます。

任意の名称.php

自分で考えたオリジナルの名称のphpファイル(name.php)を読み込ませたい場合には、各phpファイルに
<?php get_template_part(‘name’); ?>
と記述します。

また、ハイフンで区切った任意の名称のphpファイル(name-category.php)の場合には、
<?php get_template_part(‘name’,’category’); ?>
と記載することで読み込ませることができます。

用意しておきたいphpファイル一覧

  • index.php(必須。該当するphpファイルがない場合に適用される)
  • header.php(各phpファイルのヘッダー部分のみを記載したもの)
  • footer.php(各phpファイルのフッター部分のみを記載したもの)
  • sidebar.php(各phpファイルのサイドバー部分のみを記載したもの)
  • functions.php(重要。関数を記述する)
  • 404.php(重要。エラーを表示する)
  • search.php(重要。検索結果を表示する)
  • single.php(重要。単一の記事を表示する)
  • archive.php(重要。アーカイブを表示する)
  • category.php(重要。カテゴリーを表示する)
  • date.php(重要。日付アーカイブを表示する)
  • tag.php(重要。タグを表示する)
  • page.php(重要。固定ページを表示する)
  • home.php(重要。トップページを表示する)
  • comments.php(コメント欄を表示したい場合は必要)

関連記事

WordPressのタクソノミーとは

WordPressにおけるタクソノミーとは、分類のことです。標準で用意されているタクソノミーには「カテゴリ」「タグ」があります。 カテゴリとタグ カテゴリとは、投稿記事が属するテーマを設定するもので、…続きを読む

WordPressにプラグインを追加する

プラグイン配布サイトなどから、プラグインをダウンロードします。 今回は、TinyMCE Advancedという記事投稿画面のツールバーを拡張するプラグインで説明します。 まず、WORDPRESS.OR…続きを読む

WordPressで親カテゴリを含めた記事のタイトルを表示する

WordPressで、「親カテゴリ」→「子カテゴリ」→「孫カテゴリ」…→「記事タイトル」を表示するコードです。 <?php $cats=get_the_category(); $ca…続きを読む

WordPressでメディアをアップロードしようとするとHTTPエラーが表示される

WordPressでメディア(画像)をアップロードしようとしても、「HTTPエラー」と表示されてアップロードできなくなりました。 WordPressのバージョンをアップした際に起こったので、新しいバー…続きを読む

WordPressのテーマを自作する(WordPressに認識させる)

WordPressには予め提供されているテーマがあります。このテーマを利用して子テーマをつくることで簡単にテーマをつくることができますが、今回は1から自分でつくる方法について記します。 自作テーマの保…続きを読む

WordPressでページがあるのにエラー表示される

WordPressでページが存在しているにもかかわらず、そのページへのリンクをクリックすると、「存在しない」と言われてしまう場合には、「設定」→「パーマリンク設定」より「基本」を選んで「変更を保存」を…続きを読む

WordPressで記事が属するカテゴリをすべて表示する

アーカイブページなどで、記事一覧を表示している時に、その記事が属するカテゴリをすべて表示する方法です。 コード <ul> <?php while (have_posts()) : t…続きを読む

WordPressで入れておきたいプラグイン9選

WordPressでサイトを作るときにさらに使いやすくするプラグインの紹介です。WordPressはそのまま使っていると記事投稿画面が少し使いづらかったり、制限があったりしますが、そういった不便を解消…続きを読む

WordPressをプラグインを使わずバックアップする

WordPressの投稿した記事やアップロードしたファイル、テーマファイルなどをバックアップする方法です。今回はバックアップ用のプラグインを使わず手動で行います。 バックアップする 記事のバックアップ…続きを読む

WordPressで突然漢字変換ができなくなる

WordPress 4.4.2を使っていて、記事を書いているときに、急にひらがなしか入力できなくなり、漢字変換してくれなくなりました。 wp-multibyte-patchが影響している可能性があり、…続きを読む