web-dev-qa-db-ja.com

ページ上のfunctions.php vsに対するEnqueuing Script

使用する必要があるページだけにスクリプトをエンキューしても問題ありませんか。 functions.phpとは対照的に?

または、ベストプラクティスは何ですか?この例では、私は自分のサイトのフロントページにローテーターが必要です。

そして、私がそれをページにエンキューするならば、それを置くための最良の場所はありますか?

2
jw60660

Functions.phpに行きます。

この関数を呼び出すにはwp_enqueue_scriptsアクションを使用し、管理者側で呼び出すにはadmin_enqueue_scriptsを使用してください。アクションの外側でそれを呼び出すと、問題が発生する可能性があります。詳細は#11526を見てください。

出典: http://codex.wordpress.org/Function_Reference/wp_enqueue_script

function themename_load_js() {

    if ( is_admin() ) {
        return;
    }

    if is_page( 123) { // Replace 123 with your page's ID.
        wp_enqueue_script( 'jquery' );
        wp_enqueue_script( 'rotator-js', get_template_directory_uri() . '/js/rotator.js', array ( 'jquery' ) );
        wp_enqueue_script( 'rotator-init-js', get_template_directory_uri() . '/js/rotator-init.js', array ( 'jquery', 'rotator-js' ) );
    }
} 
add_action( 'wp_print_scripts', 'themename_load_js' );

編集:ボーナスのヒント:関数内でページIDをハードコーディングするのではなく、このようなことをする必要があるときはいつでも、オプションページを作成し、wp_dropdown_pages()への呼び出しを追加するフロントページを使用していると言ったので、ページIDをチェックするのではなく、おそらく関数内で is_front_page() を利用できます。クリーナー。

3
Dave Romsey

これは今私にとって絶対に働いています:

add_action('get_header', function() {
    if(is_page('566')) {

        function sp_enqueue_script() {
            wp_enqueue_script(
                'sp-custom-script',
                get_stylesheet_directory_uri() . '/assets/js/sp_script.js',
                array( 'jquery' ), '1.0', true
            );
        }

        add_action( 'wp_enqueue_scripts', 'sp_enqueue_script' );
    }
});

- is_pageはメインクエリがまだロードされていないため、functions.phpでは機能しません。負荷。

wp_enqueue_scriptフックの最後のブール値は、スクリプトがフッターにエンキューされるため、より高速に実行されます。

1
Steph