ลงทะเบียนสคริปต์เพื่อเข้าคิวทั้งในผู้ดูแลระบบและส่วนหน้า


12

ตามที่ฉันเข้าใจสคริปต์ผู้ดูแลระบบควรลงทะเบียนและจัดคิวผ่านadmin_enqueue_scriptsเบ็ดและสคริปต์อื่น ๆ ทั้งหมดwp_enqueue_scriptsดังนั้นฉันจึงได้ตั้งค่าฟังก์ชั่นต่อไปนี้เพื่อลงทะเบียนและจัดคิวสคริปต์ทั้งหมดของฉันอย่างชัดเจนและเป็นระเบียบ

คำถามของฉันคือถ้าฉันต้องการสคริปต์บางอย่าง (เช่น. jquery ตรวจสอบปลั๊กอิน) ทั้งในผู้ดูแลระบบและส่วนหน้า? วิธีการที่แนะนำสำหรับการลงทะเบียนและการลงทะเบียนสคริปต์ในกรณีนี้คืออะไร? ลงทะเบียนสองครั้งด้วย $ handle ที่แตกต่างกันหรือลงทะเบียนผ่าน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' );

ใช้หมายเลขอ้างอิงและชื่อเดียวกันเพื่อหลีกเลี่ยงการชนกับสคริปต์อื่น ๆ


ฉันเดาว่าจะแก้ปัญหาสำหรับสคริปต์ที่จะใช้ทั้งผู้ดูแลและส่วนหน้าใช่; ฉันจะเพิ่มฟังก์ชั่นอื่นสำหรับกรณีเหล่านี้ Thanks @toscho
Ronnieinspain
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.