0

以前は、Wordpress に jQuery を含めるには、次のようにする必要がありました。

wp_enqueue_script('jquery');

しかし、jquery がまだ読み込まれていないことを確認する方法として、次のようにする人もいます。

function sp_load_jquery() {
    // only use this method is we're not in wp-admin
    if ( ! is_admin() ) {
        // deregister the original version of jQuery
        wp_deregister_script('jquery');
        // register it again, this time with no file path
        wp_register_script('jquery', "http" . ($_SERVER['SERVER_PORT'] == 443 ? "s" : "") . "://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js", false, null);
        // add it back into the queue
        wp_enqueue_script('jquery');
    }
}
add_action('template_redirect', 'sp_load_jquery');

これは、Wordpress が jQuery を noConflict モードでロードすると主張する多くの人に眉をひそめています。

しかし、私の最終的な質問は、Wordpress 3.6+ では、jQuery が Wordpress によって自動的にキューに入れられるようだということです。これが事実であるかどうか誰かが教えてもらえますか?

編集

わかりましたので、以下のヘルプと回答で、これが私が今持っているものです:

function sp_load_jquery() {
    if ( ! is_admin() && !wp_script_is( 'jquery' ) ) {
        wp_deregister_script('jquery');
        wp_register_script('jquery', "http" . ($_SERVER['SERVER_PORT'] == 443 ? "s" : "") . "://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js", false, null);
        wp_enqueue_script('jquery');
    }
}
add_action('wp_enqueue_scripts', 'sp_load_jquery');

add_action は、Wordpress が wp_enqueue_scripts フックを起動するときに sp_load_jquery 関数を読み込みます。この関数は、ユーザーが admin を表示していないかどうか (jQuery がそこに自動ロードされるため) をチェックし、Wordpresswp_script_js()関数を使用して jQuery がロードされていないこともチェックします。次に、関数は jQuery を Wordpress に登録解除し、Google の CDN を使用して再登録し、Google バージョンをキューに送り返します。

ただし、Google の CDN を使用したくない場合は、次のようにします。

function sp_load_jquery() {
    if ( ! is_admin() && !wp_script_is( 'jquery' ) ) {
        wp_enqueue_script('jquery');
    }
}
add_action('wp_enqueue_scripts', 'sp_load_jquery');
4

1 に答える 1