前回の続きです。
ということで、
WordPressの標準テーマの一つである「Twenty Twenty-One」のソースをざっと見てみました。
ファイル数はそこそこ多いものの、個々のファイルの行数はそれほど多くはない感じ。
これならどうにかなりそうな雰囲気です。
以降に読んでみた印象を書いてみます。
上位レベルのテンプレートでは以下のようなパターンで書かれていることが多い印象です。
例えば index.php もそんな感じで書かれていました。
get_template_part() は構成する部品を別ファイルに書くことができる仕組みのようです。
これを使えば、関数を定義することなく機能を作れるので、
PHPのグローバルスコープを汚さずにやれる気がします(^_^;)
get_header();
while ( have_posts() ) {
the_post();
get_template_part( … ) );
}
get_footer();
固定ページのテンプレートである page.php でも同様な感じになっており、
特定の一つのページを表示するだけなのに、なぜか while でループしているのが気になりました。
こちらやこちらに書かれているように、WordPress にはループなる仕組みがあり、
それに則ってコードを書くのが流儀のようです。
まだよく分かっていませんが、ループ内でしか使えない関数とかあるっぽい?ようです。
そのため対象がひとつのページであってもループな感じに書く必要があるようです。たぶん。
あと、
関数ひとつを<?php ?>
で囲ったパターンが、
数多く使われているのが目につきました。例えば以下のような感じ。
<?php bloginfo( 'charset' ); ?>
上記のようなのをテンプレートタグと呼ぶようです。
こちらやこちらに解説が出ています。
よく使われそうなのをコンパクトに記述して出力できる仕組みという感じでしょうか。
ただ多用すると<?php ?>
がたくさんコード中に登場することになり、
個人的には目がチカチカして来そうです(^_^;)
なので、結果を即出力するのではなく、単に結果を得るタイプの関数を使うのもありかもしれません。
また、
is_xxx() なる関数もそこそこ使われているのが目につきました。
調べてみた所、条件分岐タグと呼ばれるもののようです。
現在の内容が、フロントページなのか、投稿や固定ページなのか、
あるいは各種アーカイブなページなのかなどを判定するために用意されているようです。
したがって条件分岐タグをうまく使えば、
WordPressの最小構成である index.php と style.css だけでサイトを構築できるかもしれません。
まぁ、実際にはいくつかのテンプレートを使ってやる方が普通だと思いますが。
そして、
テーマを作るのに忘れてはいけないのが functions.php。
こちらやこちらに書いてあるように、テーマの設定や汎用的な機能とかをここに書くことになります。
functions.php では、add_action() や add_filter() とかがよく使われている印象です。
それぞれ、アクションフック、フィルターフックと呼ばれるもので、
WordPressの本来の機能に対して、要素ごとに拡張や変更ができる仕組みのようです。
ただ、フックがいっぱいあるので、どれをどういう時に使えば良いのかを調べるのが大変そう(^_^;)
それから、
WordPressにはこちらに書いてあるような多言語化対応の仕組みがありますが、
自作テーマを公開するつもりはないし、自サイトのためにだけ使うので、考慮しないことにします。
ということで、
細かいことはまだまだよく分かってませんが、
だいたい大枠は見えてきたような気がします。
次回は具体的にどんなページ構造にするのかについて書いてみたいと思います。