Đăng ký một tập lệnh để được xử lý cả trong quản trị viên và giao diện người dùng


12

Theo tôi hiểu, các kịch bản quản trị được cho là đã được đăng ký và xử lý thông qua admin_enqueue_scriptshook và tất cả các tập lệnh khác wp_enqueue_scriptsvì vậy tôi đã thiết lập các chức năng sau để đăng ký và xử lý tất cả các tập lệnh của mình một cách rõ ràng và có tổ chức.

Câu hỏi của tôi là, điều gì sẽ xảy ra nếu tôi cần một số tập lệnh nhất định (ví dụ : plugin xác thực jquery ) cả trong quản trị viên và ở mặt trước? phương pháp được đề nghị để đăng ký và mê hoặc kịch bản trong trường hợp này là gì? đăng ký hai lần với một tay cầm $ khác nhau hoặc chỉ đăng ký thông qua wp_enqueue_scriptsvà nếu vậy, không có nguy cơ nó không được gọi khi được yêu cầu? (ý tôi là, tại sao người khác sẽ admin_enqueue_scriptstồn tại nếu không làm cho các tập lệnh đó có sẵn vào thời điểm sớm hơn?

Tôi thực sự sẽ đánh giá cao ai đó giải thích điều này cho tôi để hiểu đầy đủ các sắc thái của kịch bản mê hoặc trong wp. Cảm ơn

Mã của tôi:

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

Câu trả lời:


10

Bạn có thể đăng ký tập lệnh trước đó, ví dụ trên wp_loaded:

add_action( 'wp_loaded', 'register_all_scripts' );

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

Và sau đó bạn enqueue các kịch bản bất cứ khi nào bạn cần đến chúng:

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

Sử dụng cùng tay cầm và tên để tránh va chạm với các tập lệnh khác.


Tôi đoán rằng sẽ giải quyết vấn đề cho các tập lệnh được sử dụng trong cả quản trị viên và giao diện người dùng có; Tôi sẽ thêm một chức năng khác cho những trường hợp này. cảm ơn @toscho
Ronnieinspain
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.