自作テーマをWordPress公式ディレクトリに登録するつもりなら作成時やってはいけないこと

先日、自作のWPテーマをWP公式ディレクトリに登録出来ればと、登録方法を調べてみました。

公式ディレクトリとは、Wordpress管理画面などからテーマなどを検索したら、ヒットするテーマが保存されている場所です。

公式ディレクトリに登録されれば、「このテーマは危険なコードなども含まれておらず安全です。」というお墨付をレビュアーから得て登録されるので、ある程度安全性が保証されます。

登録しようと思ったのは、「Simplicityも公式ディレクトリに登録されていればいいのに」という声をいくつか見かけたもので。そこで、今更ながら登録方法調べてみました。

それで調べてみて思いのほか「やってはいけないこと」が多かったので紹介です。

photo by Kenn Wilson

スポンサーリンク
レクタングル(大)広告

テーマ登録に関する参考情報

テーマに関して公式ディレクトリに登録する方法などは、以下に書かれています。

  1. WordPress公式ディレクトリにテーマを登録する方法 | Mignon Style
  2. できる!WordPressの公式ディレクトリにテーマを登録 | WP-D
  3. [WordPress]公式ディレクトリにテーマをアップする際の覚え書き | WP-kyoto
  4. WordPress公式テーマディレクトリへの申請のためにやったこと | Welcart カスタマイズ
  5. WordPressの公式テーマディレクトリに、自作テーマ(theme)を登録していく方法| オレンジスカイの興味津々
  6. WordPress テーマ Kotetsu が公式ディレクトリに掲載された! | モンキーレンチ

中でも、Chocolatというテーマを作成された方が作成したスライドが滅茶苦茶わかりやすかったので、初挑戦の人は、まずこれを見れば良いかと思います。

このスライドを見れば、どのようなことをすれば公式ディレクトリ登録ができるのか、理解が早いと思います。

テーマ登録の手順

公式ディレクトリにテーマ登録時の流れをざっくりと説明しておくと以下の手順になります。

  1. テーマの作成
  2. ディレクトリの申請
  3. レビュアーにチェックしてもらい修正点があれば修正
  4. 登録完了

この中の、1と2は、やろうと思えばできそうで問題ないと思いました。

この時点で、Wordpressテーマの作法上、「やらなければならないこと」や「やってはいけないこと」は正しく編集しないといけません。

けれど、大抵の場合、エラーメッセージ通りにテンプレートファイルを修正していけば、たとえ時間はかかったとしても、うまくいくと思います。(国際化はかなり手間がかかりそうだけど)

ただそれよりも問題は、3のレビュアーチェックです。

このチェック項目を見た限りでは、Simplicityは絶対に登録されそうにありませんでした。

それは、Simplicityがテーマの領分を超えた機能追加をしていたからです。

以下で詳しく説明します。

※おそらく、当然レビューアーと英語でやりとりしなければならないのも中学英語レベルの僕にはかなりの障壁

公式ディレクトリに追加するならやってはいけないこと

基本的に、テーマの領分を超えた機能を付けることはNGなようです。

  1. プラグインが行うような領分の機能を付けたりすること
  2. functions.phpにコードを直書きすること
  3. スタイルシートリンクをheader.phpに直接書くこと
  4. スクリプトをheader.phpやfooter.phpに直接記入すること

プラグインが行うような領分の機能を付けたりすること

例えば、以下のような機能。

  1. SEO
  2. SNS共有ボタン
  3. metaタグの編集
  4. robots.txtの編集
  5. Analytics機能
  6. OGPに関する機能

僕の自作テーマは、これらのうちrobots.txt以外の機能は全て付いているので完全にNGです。

functions.phpにコードを直書きすること

これも完全にやってました。NGです。

ただこれは、機能はそのままに書き換えることも出来るので対応可能です。

ただ、書いてあるコード全てにこれをするのは、ものすごくめんどくさそうです;

スタイルシートリンクをheader.phpに直接書くこと

これも自作テーマで完全にやっております。

header.phpの<head></head>の中に<link rel=”stylesheet” …>とかって直接書いちゃダメなんだそうです。

ただwp_enqueue_stylesフックを使えば解決できそうではあります。ちょっと面倒くさいけど。

スクリプトをheader.phpやfooter.phpに直接記入すること

これも完全にやっています。だって、その方がコードが読みやすいんだもの。

テンプレート内に<script>…</script>とか書いてもダメなようです。

こちらも解決策は、wp_enqueue_scriptsフックを使えばOKなのだとか。セキュリティー的なもんなのかな?と思っているんだけれど、コードを書く方からすると、こういった書き方は面倒くさいことこの上ない。

追記:wp_enqueue_scriptsフック等を使う理由としては、後からプラグインやカスタマイズで「スクリプト呼び出し動作」を手軽に変更出来るようにするためでもあると思います。例えば、フックを使って「JavaScriptを読み込みのオーバヘッド減らすためにファイルを一つにまとめる」といったような処理が書きやすくなる。

まとめ

ということで、現時点でのSimplicityは、ディレクトリに登録申請をするとレビュアーに「ガイドラインちゃんと読め!」と言われてしまうかもしれません。

以下のやってはいけないことで、2~4は、多少コードが複雑化するものの対応できないことはないと思います。
  1. プラグインが行うような領分の機能を付けたりすること
  2. functions.phpにコードを直書きすること
  3. スタイルシートリンクをheader.phpに直接書くこと
  4. スクリプトをheader.phpやfooter.phpに直接記入すること

ただ、1のプラグイン的機能は、公式ディレクトリに登録するには、以下の機能をすべて取り外す必要があるのではないかと思います。

  1. SEO最適化設定
  2. 広告挿入ウィジェット
  3. SNS拡散ボタン
  4. SNSフォローボタン
  5. FacebookOGP自動設定
  6. Twitterカード情報自動設定
  7. Simplicity独自ウィジェット
  8. スキン機能
  9. Google Analytics登録機能
  10. ウェブマスターツール登録機能
  11. ファビコン登録機能
  12. アップルタッチアイコン登録機能

ただ、元々こういった機能がテーマに欲しくて作成したのに、機能を外してまで公式ディレクトリに登録するのは、本末転倒です。

ということで、Simplicityは、これまで通り「野良テーマ」で配布していきたいと思います。

ディレクトリに登録できれば、ある程度安全性が保証されるし、ユーザーのアップデートが楽になると思ったのですが、機能を外してまで登録したとしても意味がありません。