_s の大まかな構造

WordPressのテーマは、php、css、javascript…と、様々な種類のファイルで構成されています。

  • php
  • css
  • javascript
  • 画像ファイル
  • 翻訳関係のファイル
  • ライセンス関係のファイル

_sをダウンロードして、どのようなファイルがあるのか、それぞれのファイルはどのような役割を持つのかを確認します。

_s のダウンロード

_sは、公式サイトとGitHubの双方からダウンロードできます。

UNDERSCORES 公式サイト

_s GitHub

内容はどちらも大きく変わりませんが、公式サイトでadvanced optionsを入力してコードを作成すると、テーマを独自に使っていくための設定をいくつかやってくれるので、公式サイトがおすすめです。公式サイトのadvanced optionsからダウンロードする際に、自分はすぐに理解できなかった点が3点ありました。

  • Theme Slug テーマのフォルダ名を記入する。
  • WooCommerce boilerplate  ECサイトのプラグインを含んだコードを作成したい時はチェックを入れる。
  • _sassify!  sassファイルを含んだコード を作成する際にチェックを入れる。

_sの構造を理解する

ダウンロードした_sを解凍して中身を確認します。

htmlに関わるphpファイル

各phpファイルの中で、まずはhtmlの構造に関係するphpファイルについて注目します。

header.php、sidebar.php、comments.php、footer.phpは、どのように使われるのか名前で想像しやすいです。メインのコンテンツになる部分には、index.php、page.php、single.php、archive.php、404.php、search.phpが使われます。

普通の2カラムのwebsiteを考えると、それぞれのファイルは以下のように対応します。


テンプレート階層とテンプレートファイル

WordPressでは、テンプレート階層という仕組みに従って、ある情報が要求された時にどのhtmlを使ってその情報を表示するのか、を決めます。index.php、page.php、single.php…などのファイルは、テンプレートファイルと呼ばれ、このテンプレートファイルの名前によって、テンプレート階層に従った表示の優先順位が決まるので、ファイル名がとても重要です。 また、 例えば「page.phpなら固定ページを表示する」というように、このファイル名はこういう用途で使うとそれぞれ決まっています。下はWordPress Codex のテンプレート階層の図です。

https://developer.wordpress.org/files/2014/10/Screenshot-2019-01-23-00.20.04.png

ダウンロードした_sに入っているテンプレートファイルは6種類です。

  • index.php  下以外を表示する際に使うテンプレート
  • page.php 固定ページを表示する際に使うテンプレート
  • single.php 投稿ページを表示する際に使うテンプレート
  • archive.php アーカイブページを表示する際に使うテンプレート
  • 404.php 404を表示する際に使うテンプレート
  • search.php 検索結果を表示する際に使うテンプレート

テンプレートパートファイル

header.php、sidebar.php、comments.php、footer.php は、各テンプレートで内容が共通する部分をそれぞれ切り出したモジュールのようなもので、テンプレートパートファイルと呼ばれます。

例えばheader部分は、ほとんどのテンプレートファイルで共通なので、header.phpというモジュールとして切り出しておいて、それぞれのテンプレートファイルで読み込んで利用します。

その他、_sでは、template-partsというディレクトリに、content.php、content-non.php、content-page.php、content-search.phpというテンプレートパートファイルがあります。これらのファイルは、index.php、page.php、single.php…といったWordPressが事前に用意してくれたテンプレートファイルとは違って、テーマを作る人が独自に定義して使用するためのテンプレートファイルで、get_template_partという関数で呼び出すことができます。

テーマで使われる関数を定義するファイル

PHPが標準で準備してくれている関数や、WordPressが準備してくれている関数以外に、独自の機能を追加するため、関数をテーマごとに追加することができます。_sでは、functions.phpとincディレクトリ以下のphpファイルに定義されています。

テーマのデザインを定義するCSS

styles.cssにテーマのデザインを記述します。また、WordPressでは、そのテーマを識別するための基本的な情報をstyles.cssの最初に記入するルールになっています。rtl.cssという、右から左に読む言語のためのcssファイルがあります。また、layaoutsディレクトリには、2カラム用のcssが入っています。

その他、自分の場合、以下のファイルが生成されていました。

  • screenshot.png テーマのスクリーンショット
  • phpcs.xml.dist コーディングルールに関する設定
  • jsディレクトリ テーマで使われるjavascriptファイル
  • languageディレクトリ 多言語化対応の際に翻訳ファイルを設置
  • README.md マークダウンのreadme
  • readme.txt テキストのreadme
  • LICENSE ライセンスについて書かれている。_sはgnuライセンス。

Webサイトの3つの柱

簡単に言うと、webサイトは一般的に3つの柱から出来上がっています。

  • コンテンツを担当するhtml   
    テキスト部分、画像、リンク、ボタン、フォームなど、ブラウザに表示される情報。
  • スタイルを担当するcss 
    htmlがブラウザ上でどのように見えるかというデザインを決める。
  • 動きを担当するjavascript 
    ブラウザ上でインタラクティブな部分など、動的な機能を実現する。

WordPressテーマと3つの柱の関係

_sで解凍したディレクトリを見ると、style.cssとjsディレクトリがあります。この2つがそれぞれ、3つの柱の2つにそのまま対応します。残る柱は、htmlです。

WordPressは、phpというプログラミング言語とmysqlというデータベースシステムを使って、htmlファイルを作成します。 例えば、index.htmlをクライアント(ブラウザ)から要求されると、WordPressでは、phpがデータベースから必要な情報を部分ごとに取り出してindex.htmlを作成し、クライアントに渡します。

_sでは、index.php、header.php…といった各phpファイルが一体となって、データベースから必要な情報をとりだして、必要なhtmlファイルを作成します。テンプレートファイルという単語が前回出てきましたが、テンプレートファイルとは、htmlにデータベースの情報を埋め込むためphpが組み込まれたものです。

まとめると、_sでは、どういった変更したいかによって、どこをいじるのか決まります。

  • サイトに表示する情報を変更したい。→ phpファイルを作成変更する。
  • サイトの見た目を変更したい。 → style.cssを作成変更する。
  • サイトに動きをつけたい。→  jsディレクトリ以下のjsファイルを作成変更する。