web-dev-qa-db-ja.com

遅いwp_enqueue_media()

私は自分のサイト用にWP Mediaアップローダを使ってファイルを保存するWordPressプラグインを開発しました...これを行うために、私のプラグインには次のコードが含まれています。

function enqueue_scripts()
{
  wp_enqueue_script('jquery');
  wp_enqueue_media();
  // etc...
}
add_action('admin_enqueue_scripts', 'enqueue_scripts');

管理領域が非常に遅くなっていることに気付いたので、クエリログをいくつか実行しましたが、それはwp_enqueue_media()によって引き起こされたクエリのようです。

SELECT ID 
FROM wp_posts 
WHERE post_type = 'attachment' 
AND post_mime_type LIKE 'audio%' 
LIMIT 1

Googleで簡単に検索したところ、大規模サイトでは既知の問題で、以前の多くのバージョンが修正されたようです。明らかにそうではありません。

進め方がよくわからない?プラグインにこの機能が必要です。私がenqueue_scripts()関数から何かをロードしているとき、それらがグローバルに利用可能になっていると思っています。 wp_enqueue_media()は、プラグインだけでなく管理領域全体を遅くしているため、何が起こっているのでしょうか。

必要なときにだけリソースをロードすると思いました。

それを回避する方法はありますか?それとも私がプラグインを使用しているときにenqueue_scripts()のみをトリガーする方法はありますか?

これらをプラグインからロードする必要がある理由はわかりませんが、それから他のすべてのプラグインに対してグローバルに作成されます。

4
Goodbytes

自分のページにのみ管理スクリプトをロードするには、$hook-パラメータを使用します。

function enqueue_scripts( $hook )
{
  if( 'my-page' != $hook )
    return;

  wp_enqueue_script('jquery');
  wp_enqueue_media();
  // etc...
}
add_action('admin_enqueue_scripts', 'enqueue_scripts');

積載問題についてこれはまだ未解決の問題のようです。 チケット27985 の後に #32264 が付いていましたが、まだ閉まっていません。これに関する最後の編集は24時間前のことでした:)

彼らは解決策を探していて、すぐにそれを実装するようです:)

2
websupporter