「webで何か」作るブログ

35歳という遅すぎるスタートをなんとかする為のブログです。基本的に自分にとっての役立ちメモ。

WordPressの仕組みを興味ない人にざっくり伝える。

今、WordPressのテーマ作成を業務で行なっているのだけど、細かく書くべき備忘録がたくさん溜まっている。全てを書くのはいつになるやら、という感じ。

なので、まずはWordPress全体の仕組みについて、私なりの解釈を書いておきたい。

意外に、WordPressがどういった仕組みで動いているのかをざっくり書いてくれている記事は少ない気がするので。

WordPressとはなんなのか?

私的には「フレームワークの一つである」と考えた方が良いと思ってます。実際にWordPressのテーマ作りを行なってみた結果、意外にPHPの根本的知識やプログラミング的素養は(ほとんど)必要なかったことがこの答えに対しての理由です。

WordPress関数という便利な機能がセットになっていて、「お作法」を覚えれば一定レベルのものを作ることができる、というのは非常にフレームワーク的だなと思います。

なので、WordPressってなに?と言われたら、主にブログ用なシステムのフレームワークですと答えます。

なんとなく仕組みを理解する

WordPressが実はフレームワークだとして、それでも動作の仕組みが気になるものです。文章だけでは解説が難しいので簡単な図を書きます。

f:id:pochiweb:20170506233959j:plain

WordPressサイトの表示の仕組み

WordPressにおいて、記事はテキストデータとしてDBに保管されており、画像や動画などのデータはただデータとしてサーバーに保存されています。

これらをウェブサイトとして表示するためにはHTMLが必要になりますが、その雛形となるのがsingle.phpやpage.phpなどのテンプレートファイルです。

記事投稿から閲覧の流れ

どっかからふざけるなと声が飛んできそうなざっくり具合で説明すると、WordPressはこんな感じで動いている。

  1. 記事が投稿される

  2. URL、記事本文と画像など各データとパスがデータベースに記録される

  3. URLから、どのテンプレートに当てはめるべきかを判別する
  4. アクセスのあったURLに関連するデータをテンプレートに当てはめて表示する

WordPressでサイトを作るとはどういう事か?

WordPressでサイトを作る時には、どういった情報分類が必要か?デザインパターンをいくつ作るのか?の整理が重要になってくる。

具体的な問いとしては、過去記事一覧が必要か?カテゴリ毎のメニューが必要か?などがあげられるけれど、問いに対してイエスが増えるたびにテンプレートを増やす可能性も増えていくから。

なので、WordPressで使われるテンプレートをこれまた簡単に紹介しておく。

代表的なテンプレートタイプ

front-page.php

サイトのトップページとして使用するテンプレート。

page.php

固定ページに使用されるテンプレート。single.phpと違い時系列を持たないので、archive.phpに当たるテンプレートを持たない。

single.php

WordPressには「投稿ページ」と「固定ページ」がある。single.phpは投稿ページのためのテンプレート。archive.phpへ、時系列を持って表示させることができる。

archive.php

single.phpがブログの投稿だとして、そのindexページとも言えるページのテンプレート。タイトルだけ出力するのか?サムネイルも表示するのか?その辺りを設定していくことが多い。

テンプレート階層とは?

WordPressは要求されたデータをどのテンプレートに当てはめるべきか?という判断を、各テンプレートへ「優先度」をつけることで自動化しています。それが「テンプレート階層」という言葉の意味するところです。

少し例えを出すと、

ここでは紹介しませんでしたが、category.phpというテンプレートタイプも存在します。

カテゴリーの過去記事を一覧で見たい、というリクエストがあれば、まずはこのcategory.phpのテンプレートを探し、なければarchive.phpで代用する、というようなことをWordPressのコアにおいてプログラムされているのです。

 

さて、結構な量になってきたのでこの辺で終わります。