Daftarkan skrip yang akan di enqueued baik di admin maupun front end

12

Seperti yang saya pahami, skrip admin seharusnya didaftarkan dan di enqueued melalui admin_enqueue_scriptshook dan semua skrip lainnya di wp_enqueue_scriptsjadi saya telah mengatur fungsi-fungsi berikut untuk mendaftar dan enqueue semua skrip saya dengan cara yang jelas dan terorganisir.

Pertanyaan saya adalah, bagaimana jika saya memerlukan skrip tertentu (mis. Plugin jquery validate ) baik di admin dan di ujung depan? apa metode yang disarankan untuk mendaftar dan membuat skrip dalam kasus ini? mendaftarkannya dua kali dengan $ handle yang berbeda atau mendaftar wp_enqueue_scriptshanya melalui dan jika demikian, apakah tidak ada risiko tidak dipanggil saat diperlukan? (Maksud saya, mengapa lagi admin_enqueue_scriptsada jika tidak membuat skrip tersebut tersedia pada waktu sebelumnya?

Saya akan sangat menghargai seseorang menjelaskan hal ini kepada saya untuk sepenuhnya memahami nuansa skrip enqueuing di wp. Terima kasih

Kode saya:

// 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
sumber

Jawaban:

10

Anda dapat mendaftarkan skrip lebih awal, misalnya pada wp_loaded:

add_action( 'wp_loaded', 'register_all_scripts' );

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

Dan kemudian Anda enqueue script kapanpun Anda membutuhkannya:

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

Gunakan pegangan dan nama yang sama untuk menghindari tabrakan dengan skrip lain.

fuxia
sumber
Saya kira itu akan memecahkan masalah untuk skrip yang akan digunakan di admin dan front end ya; Saya akan menambahkan fungsi lain untuk kasus ini. terima kasih @toscho
Ronnieinspain