Zarejestruj skrypt do kolejkowania zarówno w interfejsie administratora, jak i interfejsu użytkownika


12

Jak rozumiem, skrypty administracyjne powinny być rejestrowane i kolejkowane przez admin_enqueue_scriptshak i wszystkie inne skrypty, wp_enqueue_scriptswięc skonfigurowałem następujące funkcje, aby rejestrować i kolejkować wszystkie moje skrypty w przejrzysty i zorganizowany sposób.

Moje pytanie brzmi: co zrobić, jeśli potrzebuję określonych skryptów (np. Sprawdzania poprawności wtyczki jquery ) zarówno w interfejsie administratora, jak i interfejsu użytkownika? jaka jest w tym przypadku zalecana metoda rejestracji i kolejkowania skryptu? zarejestruj go dwa razy za pomocą innego uchwytu $ lub zarejestruj wp_enqueue_scriptstylko, a jeśli tak, to czy nie istnieje ryzyko, że nie zostanie wywołany, gdy będzie to wymagane? (Mam na myśli, dlaczego inaczej miałoby admin_enqueue_scriptsistnieć, gdyby nie udostępnić tych skryptów wcześniej?

Byłbym naprawdę wdzięczny, gdyby ktoś mi to wyjaśnił, aby w pełni zrozumieć niuanse kolejkowania skryptów w wp. Dzięki

Mój kod:

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

Odpowiedzi:


10

Możesz zarejestrować skrypty wcześniej, na przykład na wp_loaded:

add_action( 'wp_loaded', 'register_all_scripts' );

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

A następnie kolejkujesz skrypty, kiedy ich potrzebujesz:

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

Używaj tych samych uchwytów i nazw, aby uniknąć kolizji z innymi skryptami.


Myślę, że to rozwiązałoby problem ze skryptami używanymi zarówno w adminach, jak i w interfejsie użytkownika tak; dodam kolejną funkcję dla tych przypadków. dzięki @toscho
Ronnieinspain
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.