Registra uno script da accodare sia in admin che nel front-end


12

A quanto ho capito, gli script di amministrazione dovrebbero essere registrati e accodati tramite l' admin_enqueue_scriptshook e tutti gli altri script, wp_enqueue_scriptsquindi ho impostato le seguenti funzioni per registrare e accodare tutti i miei script in modo chiaro e organizzato.

La mia domanda è: cosa succede se ho bisogno di determinati script (ad es. Jquery validate plugin) sia in admin che nel front-end? qual è il metodo raccomandato per registrare e accodare lo script in questo caso? registrarlo due volte con un $ handle wp_enqueue_scriptsdiverso o registrarlo solo e in tal caso, non c'è il rischio che non venga chiamato quando richiesto? (Voglio dire, perché altrimenti admin_enqueue_scriptsesisterebbe se non rendere tali script disponibili in un momento precedente?

Gradirei davvero che qualcuno me lo spiegasse per comprendere appieno le sfumature degli script di accodamento in wp. Grazie

Il mio codice:

// 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( '' );
    ...
}
}

Risposte:


10

È possibile registrare gli script in precedenza, ad esempio su wp_loaded:

add_action( 'wp_loaded', 'register_all_scripts' );

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

E poi accoda gli script ogni volta che ne hai bisogno:

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

Utilizzare gli stessi handle e nomi per evitare collisioni con altri script.


immagino che risolverebbe il problema per gli script da utilizzare sia nell'amministratore che nel front-end sì; aggiungerò un'altra funzione per questi casi. grazie @toscho
Ronnieinspain,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.