Registre um script a ser enfileirado no admin e no front end

12

Pelo que entendi, os scripts de administração devem ser registrados e enfileirados através do admin_enqueue_scriptsgancho e todos os outros scripts, wp_enqueue_scriptsportanto, configurei as seguintes funções para registrar e enfileirar todos os meus scripts de maneira clara e 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 um identificador $ diferente ou registre-o wp_enqueue_scriptssomente e, nesse caso, não há o risco de ele não ser chamado quando necessário? (quero dizer, por que mais admin_enqueue_scriptsexistiria se não fosse disponibilizar esses scripts em um momento anterior?

Eu realmente gostaria que alguém me explicasse 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( '' );
    ...
}
}
Ronnieinspain
fonte

Respostas:

10

Você pode registrar os scripts anteriormente, por exemplo 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.

fuxia
fonte
Eu acho que isso resolveria o problema dos scripts a serem usados ​​no admin e no front end sim; adicionarei outra função para esses casos. Obrigado @toscho
Ronnieinspain 28/13