Registre um script para ser enfileirado no admin e front end

11

Como eu entendo, os scripts admin devem ser registrados e enfileirados através do admin_enqueue_scripts hook e todos os outros scripts em wp_enqueue_scripts , então eu configurei as seguintes funções para registrar e enfileirar todos os meus scripts de forma clara e maneira organizada.

Minha pergunta é: e se eu precisar de certos scripts (por exemplo, jquery validate plugin) tanto no admin quanto no front end? Qual é o método recomendado para registrar e enfileirar o script nesse caso? registre-o duas vezes com $ a $ handle diferente ou registre-o através de wp_enqueue_scripts e se sim, não há o risco de não ser chamado quando necessário? (quero dizer, por que mais admin_enqueue_scripts existiria se não disponibilizássemos esses scripts em um momento anterior?

Eu realmente aprecio que alguém me explique isso para entender completamente as nuances dos scripts de enfileiramento no wp. Obrigado

Meu código:

// 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( '' );
    ...
}
}
    
por Ronnieinspain 28.09.2013 / 15:49

1 resposta

9

Você pode registrar os scripts anteriormente, por exemplo, em wp_loaded :

add_action( 'wp_loaded', 'register_all_scripts' );

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

E então você enfileira os scripts sempre que precisar deles:

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

Use os mesmos identificadores e nomes para evitar colisões com outros scripts.

    
por fuxia 28.09.2013 / 16:16