Registre una secuencia de comandos para poner en cola tanto en administración como en front-end


12

Según tengo entendido, se supone que las secuencias de comandos de administrador deben registrarse y colocarse en cola a través del admin_enqueue_scriptsgancho y todas las demás secuencias de comandos, por wp_enqueue_scriptslo que he configurado las siguientes funciones para registrar y poner en cola todas mis secuencias de comandos de una manera clara y organizada.

Mi pregunta es, ¿qué sucede si necesito ciertos scripts (por ejemplo, jquery validate plugin) tanto en admin como en el front end? ¿Cuál es el método recomendado para registrar y poner en cola el script en este caso? regístrelo dos veces con un identificador $ diferente o regístrelo wp_enqueue_scriptssolo y, de ser así, ¿no existe el riesgo de que no se llame cuando sea necesario? (Quiero decir, ¿por qué admin_enqueue_scriptsexistiría si no para hacer que esos scripts estén disponibles en un momento anterior?

Realmente agradecería que alguien me explique esto para comprender completamente los matices de los scripts en cola en wp. Gracias

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

Respuestas:


10

Puede registrar los scripts anteriormente, por ejemplo en wp_loaded:

add_action( 'wp_loaded', 'register_all_scripts' );

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

Y luego pone en cola los scripts cada vez que los necesita:

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

Utilice los mismos identificadores y nombres para evitar colisiones con otros scripts.


Supongo que eso resolvería el problema de que los scripts se usen tanto en admin como en front end, sí; Agregaré otra función para estos casos. gracias @toscho
Ronnieinspain
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.