WordPressの公式テーマ登録までのToDo

公式テーマ登録を目標にして、WordPressテーマを開発しています。既に予定していた機能はほとんど実装していて、このサイトで試運転をしています。
このテーマ「mosir」が対応していること、対応中の要件を書き出してみます。凄まじく長い記事になりますが、何卒ご容赦ください。
必須条件
公式向けに制作すると、制作のハードルは急激に高くなります。日本でもいくつかの公式テーマがありますが、それらは厳しい審査をパスした、非常に完成度が高いプロダクトなのです。
サイトには公式テーマに必須となる要件が記載されています。公式テーマを作る予定がない人でも、一度は目を通したほうがよいです。
Required – Make WordPress Themes
見出しを和訳してざっと並べると、以下の通りです。多い。
- ライセンスと著作権
- プライバシー
- アクセシビリティ
- コード
- 機能性と特徴
- プラグイン
- 命名、スペル、商標
- 言語と国際化
- ファイル
- クラシックテーマ
- ブロックテーマ
- テーマ設定ページとオンボーディング
- 販売、クレジット、リンク、スパム
- テーマ作成者とテーマのアップロード制限
対応中の要件
ライセンスと著作権
WordPressは、他のCMSで使用されているMITライセンスよりも厳しい、GPLライセンスが採用されています。これがある意味、もっともハードルが高いです。リスクを完全になくすには、ロゴやデザインルールから自作しなければならないです!
フォント
開発時は Noto Sans JP を読み込む前提でした。Google Fontsはテーマに含めて問題ないですが、Windowsが Noto Sans JP を正式にOS追加したので思い切って外しました。フォントが酷いのはmacOSをやめない理由の一つだったので、嬉しくて泣きそうです。
依存パッケージ
uaplus.css という最新規格のノーマライズCSSを使用する予定でしたが、ライセンスの記載がどこにもなかったので外しました。
画像素材
現時点でメインビジュアルに使っているのは「ぱくたそ」の十勝岳の写真ですが、ぱくたそがテーマ配布物として許可しているのはSサイズのみで、GPLを標榜しているわけではないので、残念ですが他のCC0写真を探さなくてはならなそうです。
テーマ設定ページとオンボーディング
テーマ用のサイトを準備しなくてはなりません。今後ドキュメントも書く必要があります。
言語と国際化
まだ国際化設定ができていません。英語をデフォルト、日本語をオプションにしなければなりません。テーマ内の解説コメントも全部英訳が必要です。
販売、クレジット、リンク、スパム
フッタにテーマサイトへのリンクを入れるか迷っています。他の公式テーマでも「フッタのクレジットはどうやって削除するのか」という初歩的な質問が後を絶たないからです。mosir はプロ向けのテーマなのでその手の質問はスルーしたいです…
カスタマイズ画面でコピーライトを入力していなかったら出てくる、という仕様にして、設定画面にその旨を書いておくのが最良の落とし所かもしれません。
対応した要件
アクセシビリティ

このテーマはアクセシビリティ、ユーザビリティに力を入れました。アクセシビリティガイドラインAA達成をデフォルトとし、ホバー、フォーカスに視覚に頼らない統一ルールを実装しています。

公式クラシックテーマは、ヘッダを飛ばすスキップリンクがページ先頭に必須です。タブキーを押すと最初に出てくるはずです。これはブロックテーマを参照して実装しています。
コード
テーマ内の関数、変数にはプレフィックス(接頭語)が必要です。対応している、と記事を書くまで思っていたのですが、4文字必要でした!3文字にしていました!!置換しなくては…
機能性と特徴
メニューはOKですが、カスタム投稿タイプを含めることはできません。ショートコードもNGです。つまり公式テーマは投稿、固定ページにしか対応できません。ショートコードの追加等はプラグインで追加する前提です。
Snow Monkeyは、カスタム投稿タイプをユーザーが追加するとカスタマイズ画面に設定が同期されます。憧れの機能ですが、私はプログラマではなく、安全性を担保できないので実装していません。
プラグイン
このテーマはSnow Monkey EditorとSnow Monkey Blocksに対応しています。すべて動作確認しているわけではないのでテーマ側での推薦予定はありません。
命名、スペル、商標
mosir(モシリ)は私の故郷、北海道のアイヌ語で「大地」を意味します。かぶっていないことを確認しています。他にもアイヌ語の候補はあったのですが、いろいろな北海道のプロダクトで使われていて難しいですね。「白」を意味する、retar(レタラ)も好きな単語ですが、ゴールデンカムイの狼で有名になってしまいました。
ファイル
コメント機能などで _s テーマを参照していますが、最新バージョンのコードを使っています。
クラシックテーマ
クラシックテーマはMETAタグに必要なコードをPHPフックで指示します。実際の制作ではバージョンを消したり、必要ないナビゲーション系のMETAを削除したりしますが、公式ではそれをやってはいけません。mosir は実際に業務で使っているテーマをもとに開発していますが、そのあたりのコードはすべて公式向けに書き直しました。
書いてないけど対応すべき要件
theme.json
mosir はクラシックテーマですが、theme.json と多数のサイトブロックに対応しています。デザインルールをテーマの利用者が策定できる theme.json は素晴らしいと思います。
対応はできているのですが、文字サイズや余白などのクラス名のルールを以下のどれにするかでまだ悩んでいます。WordPressのデフォルトテーマに合わせようと考え始めています。
- Tailwind方式(4の倍数で 1, 2, 3…)
- Bootstrap方式(現状。sm, md, lg…)
- WordPress公式(1, 2, 3…)
- ピクセル数(4, 8, 16…) NEW!
ブログとしてのWordPressの機能

WordPressの「コメント」機能は、ビジネスサイトではまったく使用されていません。しかし大昔のブログ記事についた、思い出のコメントが消えるようなことは、公式テーマではあってはなりません。十数年ぶりにコメント欄のカスタマイズをすることになりました。

「パスワードで保護されている記事」への対応も見落としがちです。幸い勤め先のナレッジでこの機能を実装していたので、忘れずに済みました。流石にWP-members等には対応していません。
対応の必要がない要件
プライバシー
私は長年、いろいろなCMSテーマの制作や配布をしています。テーマにトラッキングを埋め込んたことはないです。
テーマ作成者とテーマのアップロード制限
今回登録するのは mosirだけです。
ブロックテーマ
mosir はクラシックテーマとして作成しています。最近のWordPressの方針を見ていると、新規登録はブロックテーマしか受け付けていないのでは…と不安ですが、その場合は個人で配布します。
正直しんどい
このところ自分でなにかプロダクトを作っていないと落ち込んで、これじゃいけない、公式テーマを作ろう!と決めたのですが、ToDoを書き出してつらくなってきました。これで却下されたら立ち直れないかもしれません。
まあ、それでも業務で使うには充分すぎる知見を得ることができましたから、何かの決まりに従って制作するというのは良いことじゃないかと思います。WordPress全体がブロックテーマ、ノーコードに寄りつつある中、最後の公式クラシックテーマのつもりで丁寧に作っています。今しばらくお待ちください。




