この記事は最後に更新してから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互換のフォントファミリーが許可されているのはちょっと意外な感じですが、他のケースは「まあ、そうなのかな」と納得できる内容です。プラグインを作る際は、他サイトとの依存関係をきちんと考えないといけないですね。


最終更新 : 2018年05月27日 10:46


お勧め

add_shortcode(2018年5月27日 更新)

void add_shortcode( string $tag, mixed $func )
ショートコード(独自タグ)を追加する。ショートコードは、投稿記事内でテキスト内容がない[tag]や、テキストを内包する[tag]テキスト[/tag]の書式で使用できる独自タグのこと。標準の状態では、 the_content関数によって表示する直前のフィルター処理内でパラメータ$funcで指定した関数・メソッドが実行される。

get_user_setting(2022年1月31日 更新)

mixed get_user_setting( string $name [ , string $default = false ] )
ユーザーインターフェイス設定を取得する。

have_posts(2018年5月27日 更新)

bool have_posts( )
次の投稿データが存在するかを調べる。

in_category(2018年5月27日 更新)

bool in_category( mixed $category [ , mixed $post = null ] )
投稿情報が指定したカテゴリーに属しているか調べる。

add_feed(2024年6月24日 更新)

string add_feed( string $feedname, callable $callback )
フィードを追加する。