管理者とフロントエンドの両方でエンキューされるスクリプトを登録する


12

私が理解しているように、管理スクリプトはadmin_enqueue_scriptsフックおよび他のすべてのスクリプトを介して登録およびエンキューされることになっているwp_enqueue_scriptsので、すべてのスクリプトを明確かつ体系的な方法で登録およびエンキューするために次の関数を設定しました。

私の質問は、管理者とフロントエンドの両方で特定のスクリプト(jquery validateプラグインなど)が必要な場合はどうなりますか?この場合、スクリプトを登録およびエンキューするための推奨される方法は何ですか?wp_enqueue_scripts異なる$ handleで2回登録するか、それだけで登録します。そうする場合、必要なときに呼び出されないというリスクはありませんか?(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
ロニーインスペイン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.