この記事は最後に更新してから1年以上経過しています。

公式ディレクトリに登録するならajax.googleapis.comのライブラリは利用しない

説明

数日前、投稿一覧ページの絞り込みドロップダウンメニューを複数選択可能にするプラグイン「Posts filter multiselect」を公開したのですが、その際に指摘されたポイントを紹介します。

はじめての申請NG

年に数回プラグインを作っては公式ディレクトリに登録しているのですが、今回のプラグインではEric Hyndsさんが公開している「jQuery UI MultiSelect Widget」を使用しています。このjQueryプラグインでは、jQuery UIテーマによりドロップダウンメニューのデザインをカスタマイズできるようになっており、公開前の「Posts filter multiselect」ではできるだけコンパクトなファイル構成にしたかったのでajax.googleapis.comにあるjQuery UIテーマを wp_enqueue_style関数で指定していました。

一通り作り終えたところで公式ディレクトリに登録申請を出したところ、WordPress.orgでコートレビューをされた方から次のようなメールが届きました。

Offloading images, js, css, cgi, and other scripts to Google (or jquery.com or anywhere else frankly) is disallowed because you're introducing an unnecessary dependency on another site. If the file you're trying to use isn't a part of WordPress Core, then you should include it -locally- in your plugin, not remotely. If the file IS included in WordPress core, please call that instead.

自分のつたない英語スキル(もちろん翻訳サイトを駆使)で読み取った感じだと、「Google(jquery.comや他サイト)から画像、JS、CSS、CGIやそのほかのスクリプトを参照することは、そのようなサイトとの不要な依存関係を作ることになってしまうため、禁止されています」ということらしい。これまで何度かプラグイン登録申請をしているのですが、NGになったのはこれが初めてです。

続いて、具体的な禁止例では次のようなケースが書かれていました。

* Offloading jquery CSS files to Google - You should include the CSS in your plugin.
* Inserting an iframe with a help doc - A link, or including the docs in your plugin is preferred.
* Calling images from your own domain - They should be included in your plugin.

登録申請した自分のプラグインは一番最初のケースに当てはまり、プラグイン自身にCSSを組み込めばいいようです。まあ禁止されている以上どうしようもないので、とりあえず使用しているjQuery UIテーマを組み込み、wp_enqueue_style関数のURLパラメータを修正して、再度レビューを依頼。ほどなく公開することができました。

他サイトとの依存関係は条件しだいで許可されている

さて他サイトとの依存関係ですが、一定の条件にマッチすれば許可されているようです。今回のメールでは禁止事例のあとに、次のようなケースは許可していると書かれています。

* Calling font families from Google or their approved CDN (if GPL compatible)
* API calls back to your server to process possible spam comments (like Akismet)
* Offloading comments to your own servers (like Disqus)
* oEmbed calls to a service provider (like Twitter or YouTube)

GPL互換のフォントファミリーが許可されているのはちょっと意外な感じですが、他のケースは「まあ、そうなのかな」と納得できる内容です。プラグインを作る際は、他サイトとの依存関係をきちんと考えないといけないですね。


最終更新 : 2015年03月21日 21:23


お勧め

get_the_author(2015年12月10日 更新)

string get_the_author( [ string $deprecated = '' ] )
現在の投稿情報の著者名を取得(表示)する。

delete_metadata(2016年2月23日 更新)

bool delete_metadata( string $meta_type, int $object_id, string $meta_key [ , mixed $meta_value = '' [ , bool $delete_all = false ] ] )
メタ情報の値を削除する。

get_home_url(2017年2月25日 更新)

string get_home_url( [ int $blog_id = null [ , string $path = '' [ , string $scheme = null ] ] ] )
任意のブログ(サイト)のホームURLを取得する。ホームURLは、管理者ページの「設定」-「一般」の「サイトのアドレス(URL)」のこと。

remove_theme_support(2011年6月23日 更新)

bool remove_theme_support( string $feature )
自テーマに機能を削除する。

trailingslashit(2011年10月5日 更新)

string trailingslashit( string $string )
末尾にスラッシュ(/)を追加する。