Templateとは何か?
WordPressが、WEBページを表示する時に、どのような構造のHTMLを出力するかをPHPを使って記述した定義したページ表示のためのひな型ファイル。
具体的には、テーマに付属するindex.phpが代表的な例です(サイドバーやパンくずリストを表示するとかしないとか設定するためにテンプレートタグという関数を使って、どこに何を表示するかを定義していました。)
つまり、テンプレートファイルは、従来テーマを作成する人が作っていたファイルですが、WordPress 5.8からは、テーマを使用する人も作成できるようになりました。
この機能を使えば、テーマが設定しているテンプレートをもとに利用者がテンプレートを自由にカスタマイズすることができます。
WordPressに精通している人なら、WordPress 5.8以前にもチャイルドテーマを使ってテーマのテンプレートを上書きしてカスタマイズする方法を知っているかもしれませんが、がテーマ作成者と同様の知識が必要でした。新しいテンプレートエディタは、それに比べるとハードルがかなり低いといえます。
ただ、誰でもやりたいことを実現できるというわけではありません。これまでチャイルドテーマを使いこなしてきた人たちは、新しいテンプレートシステムを学び直さなければなりませんし、カスタマイズが初めての人は、簡単なカスタマイズから徐々に高度なカスタマイズの方法を学ぶ必要があります。
Templateを使うと何ができるのか?
投稿を作成する場合、デフォルトテンプレートに定義された投稿タイトル、投稿本文、日付、カテゴリー、タグが表示されるだけです。
従来だとショートコード等使って、必要なコンテンツを追加していたかもしれません。ただ、投稿本文にショートコードを毎回追加するといった作業は手間がかかりまし表示位置も制約が発生します。
そこでテンプレートの登場です。
これまでのテンプレートとの違い。
投稿の編集画面を開き、しばらく待つと、黄色マーカーの部分が表示されます。
テンプレート編集には、Edit と New リンクが表示されます。
Edit リンク
テンプレートのセレクトボックスで、Default Templateが選択されている場合は、
セレクトボックスの上部にある
Template: ●●● が編集対象ファイルになります。
投稿の場合は、Single Post,固定ページの場合は、pageになり 編集者が現在使用されているテンプレートがよくわからなくても大丈夫です。
テンプレートを編集すると、編集内容に従って変更され、Single Postテンプレートとして、カスタム投稿タイプに保存されます。
Single Postテンプレートがいったん保存されると、テーマのテンプレートは参照されず、次からは、editリンクをクリックすると、Single Postテンプレートが参照されるようになります。
Newリンクで開くテンプレート
Newリンクをクリックすると、まず テンプレートの名前を入力するように促す。モーダルボックスが表示されます。
Name欄には、自由に日本語でも英語でも構いませんが、仮に日本語で「ホームページ」としたような場合 保存されるテンプレートのSlugは、以下のようにURLエンコードされ複雑になります。
wp-custom-template-%e3%83%9b%e3%83%bc%e3%83%a0%e3%83%9a%e3%83%bc%e3%82%b8
Newリンクをクリックすると、Core規定の defaultBlockTemplate が開きます。
emulsion テーマの場合は、以下のようなテンプレートを表示します。
以上の事から、Default Template が選択された状態で、edit リンクをクリックしてテンプレートの編集を行うと、個別投稿全般にテンプレートが適用されます。(固定ページを開いている場合は、page.htmlが変更になるので、同様にページ全般に影響します)
Newリンクをクリックしてテンプレートを作成した場合は、その投稿、または固定ページ専用のテンプレートが作成されるという事を覚えておくといいです。
テンプレートは、どんな時に活躍するのか?
emulsionをアクティベートしてください。テンプレートがどんな時に必要になるのか説明してきたいと思います。
いくつかの見出しブロックと段落などで構成された投稿を作成してください。
テンプレートのドロップダウンリストから、「single-with-toc」を選択して、保存投稿を表示してみてください。
投稿を表示して画面をスクロールすると、左側にTOC(Table of contents)が表示されていると思います。
このように、通常の投稿には含まれないコンテンツを追加して表示することができます。
テンプレートエディタ上で、コンテンツを表示するブロックは、現在でもたくさん準備されています。