以前は、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');