관리자 및 프론트 엔드에서 큐에 넣을 스크립트 등록


12

내가 이해하는 것처럼 관리자 스크립트는 admin_enqueue_scripts후크와 다른 모든 스크립트를 통해 등록되고 대기열에 wp_enqueue_scripts있어야하므로 모든 스크립트를 명확하고 체계적으로 등록하고 대기열에 넣도록 다음 기능을 설정했습니다.

내 질문은 관리자와 프론트 엔드에서 특정 스크립트 (예 : jquery validate plugin) 가 필요한 경우 어떻게해야 합니까? 이 경우 스크립트를 등록하고 큐에 넣는 데 권장되는 방법은 무엇입니까? 다른 $ 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' );

다른 스크립트와의 충돌을 피하려면 동일한 핸들과 이름을 사용하십시오.


스크립트가 관리자와 프론트 엔드 모두에서 사용되는 문제를 해결할 것이라고 생각합니다. 이 경우 다른 기능을 추가하겠습니다. 감사합니다 @toscho
Ronnieinspain
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.