web-dev-qa-db-fra.com

Comment puis-je ajouter mon script à l'administrateur à l'aide de script-loader.php?

J'essaie de charger mon script personnalisé dans le panneau d'administration à l'aide de la même méthode que celle utilisée par WordPress pour charger les scripts dans la zone d'administration.

Voici un exemple de script chargé par wp-includes/script-loader.php:

$scripts->add(
    'password-strength-meter',
    "/wp-admin/js/password-strength-meter$suffix.js",
    array( 'jquery', 'zxcvbn-async' ), 
    false, 
    1
);

J'ai donc essayé d'ajouter mon propre script par la même méthode. JE :

  • Création d'un fichier nommé user-profile-validator.js dans /wp-admin/js/ (a également créé une version détaillée)
  • J'ai essayé de le mettre en file d'attente en utilisant le code suivant:

$scripts->add(
    'user-profile-validator',
    "/wp-admin/js/user-profile-validator$suffix.js",
    array( 'jquery' ), 
    false, 
    1
);

Mais rien ne s'est passé, ce n'est ni ajouté à l'URL, ni je peux trouver mon script parmi les scripts chargés.

Pourquoi cela arrive-t-il?

PS: Je fais un patch, c'est pourquoi je modifie les fichiers core.

1
Jack Johansson

Je pense que vous êtes seulementvous enregistrezil avec:

$scripts->add( 'user-profile-validator', ...)

mais pasmise en file d'attenteit.

Vérifiez par exemple comment wp_register_script() est un wrapper pour la méthode WP_Scripts::add().

Ajoutez en plus:

wp_enqueue_script( 'user-profile-validator' );

dans le fichier admin approprié pour le mettre en file d'attente ou pour l'ajouter en tant quedependencyà un autre script mis en file d'attente.

Notez que password-strength-meter est une dépendance du script user-profile:

$scripts->add( 
    'user-profile', 
    "/wp-admin/js/user-profile$suffix.js", 
    array( 'jquery', 'password-strength-meter', 'wp-util' ), 
   false, 
   1 
);

c'est mis en file d'attente avec:

wp_enqueue_script( 'user-profile' );

dans le backend.

1
birgire