Зареєструйте сценарій, який потрібно отримати як в адміністраторі, так і в передній частині


12

Як я розумію, сценарії адміністратора повинні бути зареєстровані та задіяні через admin_enqueue_scriptsгачок та всі інші сценарії, wp_enqueue_scriptsтому я встановив наступні функції, щоб чітко та організовано реєструвати всі мої сценарії.

Моє запитання полягає в тому, що якщо мені потрібні певні сценарії (наприклад, jquery валідація плагіна) і в адміністраторі, і на передньому кінці? який рекомендований метод для реєстрації та запускання сценарію в цьому випадку? зареєструйте його двічі з різною ручкою $ або зареєструйте wp_enqueue_scriptsлише через це, чи так, чи не існує ризику його не викликати, коли потрібно? (я маю на увазі, чому б інакше admin_enqueue_scriptsіснувати, якщо не зробити ці сценарії доступними раніше?

Я дуже вдячний, щоб хтось пояснив мені це, щоб повністю зрозуміти нюанси створення скриптів у wp. Дякую

Мій код:

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

Відповіді:


10

Ви можете зареєструвати сценарії раніше, наприклад на wp_loaded:

add_action( 'wp_loaded', 'register_all_scripts' );

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

І тоді ви запускаєте сценарії, коли вони вам потрібні:

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

Використовуйте ті ж ручки та імена, щоб уникнути зіткнень з іншими сценаріями.


я здогадуюсь, що це вирішило б проблему для сценаріїв, які будуть використовуватися як в адміністраторі, так і в передній частині так; я додам ще одну функцію для цих випадків. спасибі @toscho
Ronnieinspain
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.