こんにちは、みみです。
Gutenbergを読む会のSlackに #何でも質問室 という魔法のチャンネルがありまして、「とりあえず、解らないこと、疑問を放流する」(答えるとは言っていない)スタンスではあるのですが、今の処フリークスなみなさんが全力で答えてくれる(みんなも答えが知りたい疑問だらけだからだと思います)神チャンネルとなっています。多謝。
開始1週間で続々と溜まっていくそのナレッジを公開しないとなーと思って作ったのが、Gutenberg Freaks Note です。が、フリークス渾身のポエム(走り書きメモ)となっておりますので、心してご高覧ください。とはいえ、カスタムブロックの開発でガチに詰まっている人には良いヒントがあるのではと思います。
で、先日私がふと思い出した疑問を投げてみたところ、中々面白い話が出来たと思ったのでブログにしてみます。特にfunction名が出てくるような具体的な話ではないのでノートには書いていません。※ 引用以外は個人の感想です。
見栄えと機能の境界線
WordPressのテーマとプラグインの境界線については、追加しようとしているモノが見た目に関わる機能(function)であるかどうかで判断せよという公式の見解があります。基本的には、テーマを切り替えても崩れない、編集可能、データ消えない、というようなことがその判断の大元のようです。
Non-design related functionality is not allowed.
Presentation vs Functionality | Required – Theme Review Team — WordPress.org
設計(見た目)に関連しない機能は許可されていません。
が、そもそも、この方針が曖昧模糊として後付け上等な感じなので、私はガン無視しているのですが(公式テーマとか出してないし)、5.0からブロックエディタが導入されたことで、この部分の曖昧さというか境界線を公式がぶっ壊してきたなーとぼんやり思っていました。Gutenberg プロジェクトの方向性を見るにつけ、テーマは一体何をするものぞ、という心地になってきます。
この辺の大きな話は WordPressテーマの終わり? – Capital P とかに譲りますが、目下受託案件が押し寄せる一開発者として、具体的に今この時の設計をどうしておけば、この先何年かは使ってもらえるサイト設計に(そしていずれリニューアルされる時に使い回せるデータベースに)出来るか、というのが一番の難問なわけで、その辺の思い付きとみんなに貰ったヒントをちょっとメモしておこうと思います。
そもそも、ハンドブックにはテーマの機能 というページがあって、テーマの担う機能とはこの辺だよ、という一覧があるので、今の処ここから逸脱しない範囲がテーマの機能ということにはなっているのだと思います。
一応、最初にあげたページの同じ章にも、
Adding custom blocks for Gutenberg (the new text editor in WordPress) is not allowed. Use a companion plugin instead.
とあって、カスタムブロックの追加はテーマじゃなくてプラグインでしましょうというのは明記されています。
一番の問題は既存のブロックにスタイルを追加するブロックフィルターの存在です。ブロックフィルターを使って Gutenberg のブロックをカスタムしてみようの記事でその方法はざっくり紹介しています。
最初はああ、私が受ける範囲の案件には、ほぼこれでテーマに突っ込めば十分だなーとは思っていたのですが、今は一歩間違えるとカオスになるなーと思い始めています。(そもそもCSSの命名規則からしてカオスなWordPressなので、作る度にゾワゾワしてしまうんですががが)
フリークス(一部開発者)の考え方
それで先の質問箱に「テーマでブロックのスタイル追加は結局非推奨なんですか? 」という雑な質問を投げてみたところ。
大枠としては、テーマにブロックフィルターで追加するのは全然OKだと思う、という答えとともに、
・コアブロック標準へのスタイルの適用
→ テーマ側
・コアブロックに独自拡張したスタイルの適用
→ コアでもプラグインでもどちらでも良いのでは?個人的には使いまわせるようにプラグイン側で実装
・ブロック自体の追加
→ プラグイン側って感じで僕はやってます。
受託だけど(中略)ルール作りが面倒ってのと、複数の案件で使い回すプラグインにするようにしてる
プラグイン側にCSSはほとんど入れないですねぇ。結局テーマ側で書くので。
ブロックスタイルの追加は簡単なので、蓋を開けてみたらスタイルが10個、20個…とか出くわしそうですね。
何をブロックスタイルで追加するか。何をその下の設定パネルで追加するか。の設計大事になってきそう。
というようなご意見をいただいて、ですよねー!となったのでありました。
というわけで、私としてはSassのライブラリをブロックの骨子と見た目を分けるprefixを作って整理しつつ、プラグインとテーマを抱き合わせで作るのが良いのかなーと思い直しています。
明記しておくと、決して非推奨ではないということです。多分、やっつけ仕事でボコボコ作ってるとツラいことになると思うよ、という話なのかなと。ご参考になれば幸いです。
Photo by Clem Onojeghuo on Unsplash
Feedback
ご意見いただいたものをピックアップしておきます。感謝!
もっと前から破綻
ですよね。私もそう思ってますっていうか最初から無茶だと思ってます。