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

11

D'après ce que j'ai compris, les scripts d'administration sont supposés être enregistrés et mis en file d'attente via le crochet admin_enqueue_scripts et tous les autres scripts à l'adresse 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 transparente. manière organisée.

Ma question est la suivante: que faire si j'ai besoin de certains scripts (par exemple, le plug-in jquery validate ) à 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 un $ descripteur différent ou enregistrez-le uniquement à l'aide de wp_enqueue_scripts . Si tel est le cas, n'y at-il pas le risque qu'il ne soit pas appelé si nécessaire? (Je veux dire, pourquoi admin_enqueue_scripts existerait-il sinon si ces scripts étaient 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( '' );
    ...
}
}
    
posée Ronnieinspain 28.09.2013 - 15:49

1 réponse

9

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 chaque fois que 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.

    
réponse donnée fuxia 28.09.2013 - 16:16

Lire d'autres questions sur les étiquettes