つい思い立って、Twitter や Facebook に
と書いたところ思いのほかウケが良かったので記事を書くことにしました。
テーマの構成
2010年版のデフォルトテーマ Twenty Ten の子テーマとして、独自テーマ(自作テーマ)を作りました。ここでは、テーマ名を FooBar、テーマのスラッグを foobar としておきます。
何をやらかした?
Twenty Ten は WordPress.org の公式ディレクトリ掲載のテーマで、2010年6月に公開されて以来アップデートを重ね、最新バージョンが 2.9 (2019年5月公開)。古いテーマだからといってアップデートが止まってるわけではないんですね。
私、WordPress サイトのアップデートは基本的に WP-CLI で行っているので、いつもどおり黒い画面でコマンドをたたいたんです。テーマをアップデートするコマンドを。
wp theme update --all
で、目を疑ったわけですよ。
+-----------+-------------+-------------+---------+ | name | old_version | new_version | status | +-----------+-------------+-------------+---------+ | twentyten | 2.5 | 2.9 | Updated | | foobar | 1.0 | 1.0.2 | Updated | +-----------+-------------+-------------+---------+
独自テーマが上書きされてる…
WP-CLI でのアップデート作業はいつも
wp db export
とデータベースをエクスポートした上で進めていってます。公式ディレクトリに公開されているテーマやプラグインは最悪、後からでも追加できますし。でも今回は、それだけじゃ不十分だったという事案。独自テーマと同じスラッグの公式テーマが公開されているなんて想像しないでしょう…ねえ…
このときは、FooBar テーマ 1.0 公開時のスナップショットが残っていたので事無きを得たものの、サイトを構成するファイル群すべてのバックアップの重要性を改めて痛感した出来事でした。
(ちなみに私は BackWPup 派)
悲劇を回避できるスラッグのマジックワードは?
結論から申し上げますと。
上書きの悲劇を回避するには、独自テーマのスラッグに wordpress というワードを含めるとよいのでは、というのが私の見解です。
というのは、公式テーマディレクトリへの掲載を申請する際、このような規約に従う必要があるからです。
Naming
Required – Theme Review Team — WordPress https://make.wordpress.org/themes/handbook/review/required/
* Theme names must not use: WordPress, Theme.
* Child themes should not include the name of the parent theme unless the themes have the same author.
* Spell “WordPress” correctly in all public facing text: all one word, with both an uppercase W and P.
《ざっくり意訳》
テーマのネーミングについて
- テーマ名には、WordPress、Theme を使用しないでください。
- テーマの作成者が同じでない限り、子テーマには親テーマの名前を含めないでください
- テーマ内に記載するすべてのテキストについて、WとPを大文字にして「WordPress」と正しく表記してください
つまり wordpress や theme を含むテーマ名は公式ディレクトリには掲載できない。ならば、掲載を前提としない独自テーマのスラッグに wordpress や theme という文字列を入れておけば、勢いでうっかり
wp theme update --all
というコマンドをたたいてしまっても悲劇には至らない。念を入れて foobar-wordpress-theme というようなスラッグにするのもありでしょう。
テーマでなくプラグインの話ですが、私もずいぶん前、プラグインを公式掲載に申請する際「wordpress を含むスラッグ文字列は NG だから wp に変えてね」と、レビュアーから差し戻されたことがありました。
公式のテーマディレクトリの SVN リポジトリを見ると、差し戻しをくらった残骸とおぼしき箇所が散見されますね。
コメントを残す