web-dev-qa-db-ja.com

Wordpressに含まれていないサードパーティのJavascriptライブラリを含める

私のWordpressプラグインには、第3部のJavascriptライブラリ、特にLeafletJSを含めたいと思います。他のプラグインに同じライブラリが含まれているとどうなるかを考えずに含めるだけでは良い考えではないと思いました。おそらく他の(メジャー)バージョンでさえ。私はWordpressがすでに多くの人気のあるJavascriptライブラリを含んでいることを知りました。これらのうちの1つを使用したい場合は、Wordpressにこれらのライブラリをロードするように指示するだけです。すべてのプラグイン開発者がこのようにしていれば問題はなく、すべてのプラグインは同じバージョンのライブラリを使用しています。私がどのように私が第三者の図書館を含めるべきであるかについてウェブを捜したとき、私はこのように記述した多くの結果を見つけるだけでした。しかし、それは私を助けません。

Wordpressにまだ含まれていないJavascriptライブラリを含めたい場合はどうしたらいいですか?私のプラグインが同じライブラリを含む他のプラグインと競合しないような方法はありますか?今のところ私はプラグインでこの問題を抱えていますが、テーマでこの問題を抱えていてもうまくいく解決策があればいいでしょう。

4
JuSchu

あなたが使いたいライブラリが既に他のプラグインに含まれているかどうかをチェックするために wp_script_is を使う必要があります。ハンドルが重要であることがわかりますので、それをwhatEverIWant.jsに変更しても、ライブラリは認識されません。

3
Kevin Mamaqi

開発者がこれを達成できるような現実的な方法はありません。これは主に理由です:

  • 異なるプラグインは異なるバージョンのライブラリに依存しているかもしれませんが、他のライブラリとは動作できません。
  • すべての開発者が、何かを作成しながら競合を考慮するのに十分クリーンに動作するわけではありません。低品質のコード化テーマ/プラグインは常に問題を引き起こす可能性があります。
  • 同じライブラリを異なる名前で含めることができ(不注意、間違いなどによる)、テーマ/プラグインを公開している場合は、顧客がこれらの問題を確認することはできません。

ただし、WordPressにも含まれている有名で人気のあるライブラリを使用している場合は、次の関数を使用して、すでにロードされているかどうかを確認できます。

wp_script_is( $name, $list = 'enqueued' );

スクリプトがすでに印刷/エンキュー/登録されている場合は、これはtrueを返すので、if()と組み合わせて使用​​して、再度印刷するかどうかを決定できます。

しかし、私が上述したように、名前が同じでなければ、これはうまくいきません。

1
Jack Johansson