私は自分のサイト用に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()のみをトリガーする方法はありますか?
これらをプラグインからロードする必要がある理由はわかりませんが、それから他のすべてのプラグインに対してグローバルに作成されます。
自分のページにのみ管理スクリプトをロードするには、$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時間前のことでした:)
彼らは解決策を探していて、すぐにそれを実装するようです:)