web-dev-qa-db-fra.com

Enregistrer un script à mettre en file d'attente à la fois dans admin et front-end

Si je comprends bien, les scripts d’admin sont supposés être enregistrés et mis en file d'attente via le hook admin_enqueue_scripts et tous les autres scripts à wp_enqueue_scripts. J'ai donc configuré les fonctions suivantes pour enregistrer et mettre en file d'attente tous mes scripts de manière claire et organisée.

Ma question est la suivante: si j’ai besoin de certains scripts (par exemple. jquery validate plugin) à la fois en mode administrateur et en mode frontal? Quelle est la méthode recommandée pour enregistrer et mettre le script en file d'attente dans ce cas? enregistrez-le deux fois avec diferent un $ handle ou enregistrez-le avec wp_enqueue_scripts uniquement et si oui, n'y a-t-il pas le risque qu'il ne soit pas appelé si nécessaire? (Je veux dire, sinon pourquoi admin_enqueue_scripts existerait-il sinon pour rendre ces scripts disponibles plus tôt?

J'apprécierais vraiment que quelqu'un m'explique cela afin de bien comprendre les nuances des scripts de mise en file d'attente dans wp. Merci

Mon code:

// REGISTER ALL NON-ADMIN SCRIPTS
add_action( 'wp_enqueue_scripts', 'register_all_non_admin_scripts' );
function register_all_non_admin_scripts() {

wp_register_script( ... );
wp_register_script( ... );

}

// ENQUEUE NON-ADMIN SCRIPTS CONDITIONALLY
add_action( 'wp_enqueue_scripts', 'enqueue_scripts_where_required' );
function enqueue_scripts_where_required() {

// scripts to be loaded at all times
wp_enqueue_script( '' );

// scripts to be loaded conditionaly
if( is_page( '' ) ) {
    wp_enqueue_style( '' );
}
}

// REGISTER ALL ADMIN SCRIPTS
add_action( 'admin_enqueue_scripts', 'register_all_admin_scripts' );
function register_all_admin_scripts(){
wp_register_script( ... );
wp_register_script( ... );
}

// ENQUEUE ADMIN SCRIPTS
add_action( 'admin_enqueue_scripts', 'enqueue_admin_contact_cpt_js' );
function enqueue_admin_contact_cpt_js(){

global $post_type;

// scripts to be loaded at all times
wp_enqueue_script( '' );

// scripts to be loaded conditionaly by post type
if( 'contact' == $post_type ){
    wp_enqueue_script( '' );
    ...
}
}
12
Ronnieinspain

Vous pouvez enregistrer les scripts plus tôt, par exemple sur wp_loaded:

add_action( 'wp_loaded', 'register_all_scripts' );

function register_all_scripts() 
{
    wp_register_script(...);
}

Et ensuite vous mettez en file d'attente les scripts quand vous en avez besoin:

add_action( 'wp_enqueue_scripts', 'enqueue_front_scripts' );
add_action( 'admin_enqueue_scripts', 'enqueue_back_scripts' );

Utilisez les mêmes descripteurs et noms pour éviter les conflits avec d'autres scripts.

10
fuxia