2023
12/26

ブロックエディタ以前しか知らないWordPress老人がフルサイト編集対応のテーマ作成に挑戦する

WordPressについてはブロックエディタ以前の知識しかないため、年末年始の余暇を利用してフルサイト編集に対応したテーマを作れるように勉強しようと思います。

ちなみに:私のスペック
ブロックエディタ以前のWordPressは多少使っていました。テーマ作成はできる、プラグイン開発はちょっとだけできる。
ただし仕事で使っていたわけではないので趣味ユーザーの範囲、という程度です。

ADs

従来のテーマとフルサイト編集対応テーマの違い

従来のテーマは(ウィジェットなど編集可能パーツもあるとはいえ)固定枠の中にコンテンツ部分があるという構成ですが、フルサイト編集対応テーマはページのすべてがブロックにより構成されています。

共通化されたテンプレートやパターン、パーツなどが使えますので、毎回0からページを構築する必要があるというものではありません。

最小限の設定

ということで、既存テーマのカスタマイズなどではなく全くの0からのテーマ作成に挑戦します。
ちゃんと完成するかな…。

1.wp-content/theme内にテーマ用フォルダを作る

仮に「test」とします。

2.testフォルダ内にstyle.cssを作る

style.css内のコメント部分を読み取ってテーマ選択画面に説明を表示します。
最小限「Theme Name」さえあればテーマとして機能します。

それ以外の項目

配布用テーマでない場合ほとんどの項目は不要だと思います。

3.testフォルダ内にtemplatesフォルダを作り、その中にindex.htmlを置く

現時点では中身は空でかまいません。これが従来のindex.phpにあたります。

このあたりから従来と違いが出てきた。

驚くことにこの段階でテーマとしては適用できてしまいます。

カラムや各種ブロックを駆使すればホームページとしての体裁を整えることもできてしまいそうです。

テンプレートファイルの分割

4.トップページ、一覧ページ、個別記事ページを分けたい

のでtemplates内にindex.html(一覧ページ用)のほかに

home.html(トップページ用)
single.html(個別記事ページ用)

を追加します。

共通パーツを追加

全ページに渡る共通ヘッダとフッタを設置したい。

5.testフォルダ内にpartsフォルダを作る

そのpartsフォルダ内に共通ヘッダー用のcmnHeader.html、共通フッター用にcmnFooter.htmlを作成します。

6.共通ヘッダー、共通フッターを使用したいテンプレート(今回はhome.htmlでは共通フッター、index.htmlとsingle.htmlでは共通ヘッダーと共通フッター)にパーツ読み込みタグを書く

テンプレートの読み込みはwp:template-partというタグがあります。
HTMLファイルなのでPHPの関数ではなくコメントタグになります。

共通ヘッダー

共通フッター

slug…ファイル名
area…headerかfooterかuncategorized
tagName…パーツを囲うタグ名。divやheader,footerなど。

7.cmnHeaderとcmnFooterの中身を書く

ポイントとしてはノーマルなHTMLではなく、それぞれの中身もブロックとして成り立つように書きます。
一旦エディタ上で作成してコードエディターに切り替え、そのソースをコピペするのがいいと思います。

ブロックやグループの単位はコメントタグで区切られている、と分かれば比較的読みやすいのではないかと思います。
個人的にはこの仕様は(旧バージョンとの互換性維持のためには仕方ないとはいえ)ちょっとレガシーすぎると思いますが

cmnFooter.htmlの中身

cmnHeader.htmlの中身

8.パターンを作成する

パターンはサイト内で使える雛形のようなものです。
パーツと同様にブロックとして成り立たないといけませんが、PHPで書くことができます。

先程ヘッダーとフッター用に作った「パーツ」と何が違うのか

パーツ
HTMLで作成する。テンプレートにはじめから設置する(ことが多い)

パターン
PHPで作成する。パーツ内に含めることができる。

概念的には

テンプレート>パーツ>パターン>グループ>ブロック
(上位が下位を包括することができる)

という感じでしょうか。

標準のカラムにはない4分割均等割のパターンを作ってみます。

はじめのコメント部分で管理画面上での表示を管理します。

* Title: タイトル
* Slug: テーマ名/パターンファイル名
* Categories: featured,posts,text,gallery,call-to-action,banner,header,footer,team,testimonials,services,portfolio,media から選ぶ(複数選ぶ場合はカンマで区切る)

Categoriesについてはregister_block_pattern_categoryという関数で追加(削除の場合はunregister_block_pattern_category)が可能です。

functions.phpに

と書けば「my-cat」という分類を使うことができます(管理画面での名称は「オレオレカテゴリ」となる)

スクリーンショットを勝手に生成してくれますが、自分で画像を作ることはできないんだろうか…。

9.functions.phpを作成する

functions.phpの書き方は従来と変わりません。ちょっと安心した。

例:オリジナルCSSの読み込み

とりあえず今回はここまで。

次回はtheme.jsonの作成をやってみようと思います。

ADs

Post Comments

メールアドレスが公開されることはありません。