web-dev-qa-db-fra.com

Lent wp_enqueue_media ()

J'ai développé pour mon site un plugin WordPress utilisant le WP Media Uploader pour stocker des fichiers ... Pour ce faire, mon plugin contient le code suivant:

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

J'ai remarqué que la zone d'administration devenait vraiment très lente, j'ai donc lancé quelques journaux de requêtes et la requête déclenchée par wp_enqueue_media () apparaît;

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

Après une recherche rapide sur Google, je constate qu’il s’agit d’un problème connu sur les grands sites qui a apparemment été corrigé dans de nombreuses versions précédentes .... évidemment pas!

Je ne sais pas trop comment procéder. J'ai besoin de cette fonctionnalité dans mon plugin. Je ne comprends pas très bien pourquoi cette fonction doit être appelée alors qu'elle semble être généralement disponible dans toute la zone d'administration. Encore plus étrange, lorsque je charge des éléments de ma fonction enqueue_scripts (), ils sont disponibles globalement, ce que je suppose C'est ce qui se passe avec wp_enqueue_media () car cela ralentit toute la zone admin et pas seulement le plugin.

J'ai supposé que cela ne chargerait que des ressources quand il en aurait besoin.

Y a-t-il un moyen de contourner ça ou existe-t-il un moyen de déclencher uniquement enqueue_scripts () lorsque j'utilise le plugin?

Je ne comprends tout simplement pas pourquoi je dois les charger depuis le plugin, mais ensuite, il est généralisé à tous les autres plugins.

4
Goodbytes

Pour charger les scripts d'administration uniquement sur vos pages, vous devez utiliser le paramètre $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');

Concernant le problème de chargement. Cela semble être toujours un problème ouvert. Le ticket 27985 a été suivi de # 32264 , qui n’est pas encore fermé. La dernière édition sur c'était il y a 24hours :)

On dirait qu'ils cherchent une solution et l'implémenteront bientôt :)

2
websupporter