外部jQuery/javascriptファイルをWordPressにリンクする方法
-
16-10-2019 - |
質問
だから私はスターカーを使用して次のWPテーマの基礎を築いていて、小さな問題に遭遇しました。私は自分のバージョンのjqueryに掲載していました。 header.php
ファイルですが、FireBugを使用して私のサイトを検査したとき、JQueryが2回ダウンロードされていることに気付きました。 wp_head()
働き。
問題を修正しようとすると、ヘッダーファイルのコメントに気づきました。
/* Always have wp_head() just before the closing </head>
* tag of your theme, or you will break many plugins, which
* generally use this hook to add elements to <head>, such
* as styles, scripts, and meta tags
*/
だからここに私の問題があります、私はそれを使用したい他のファイルの前にjQueryファイルを設定する必要があるという印象を受けています wp_head()
の最後のものでなければなりません <head>
要素、私は私が置くべきだと思っているので、私は今少し混乱しています wp_head()
上部では、WPに含まれていたjQueryファイルがすべてのプラグインに使用されますが、そうしないと言っていても。
私はjqueryラインにコメントしました wp_head()
機能しますが、管理ページに必要なので、元に戻す必要がありました。
また、Google CDNバージョンのjQueryを使用して(少なくとも実験)使用したいと思いますが、2回含めたくありません。
私が説明しようとしていることを理解していただければ幸いです。この問題をどのように解決できるかについての提案は最も高く評価されます。また、ヘッダーファイルでJavaScriptファイルをどのように処理するかについてのアドバイスにも感謝します。
ありがとう!
解決
あなたの質問の文言から、あなたは書くことによってスクリプトを追加する必要があります <script>
テンプレートのタグ。自分のスクリプトを介して追加します wp_enqueue_script()
テンプレートで functions.php
, 、jQueryに依存を適切に設定します wp_head()
スクリプトを追加します。
function my_scripts() {
wp_enqueue_script( 'my-sweet-script', get_bloginfo('template_directory') . '/script.js', array('jquery') );
}
add_action('template_redirect', 'my_scripts');
を参照してください コーデックスページ 詳細については。
他のヒント
見てみることをお勧めします WordPressでjQueryを使用するための5つのヒント. 。とりわけ、GoogleのライブラリからjQueryをロードするために必要なコードが表示されます。
function my_init() {
if (!is_admin()) {
// comment out the next two lines to load the local copy of jQuery
wp_deregister_script('jquery');
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js', false, '1.3.2');
wp_enqueue_script('jquery');
}
}
add_action('init', 'my_init');
また、チェックアウトすることもできます Googleライブラリを使用します プラグイン。
@tnorthcuttは、自分のネイティブjqueryを適切にdequeueする必要があることは正しいですが、WP Coreの別のJQueryバージョンをロードするときに問題に遭遇することは確実です。コアとプラグインの両方がそこにあることに依存しています。したがって、WPが更新されるたびに最新のjQueryでテーマを更新しないと、サイトが壊れる可能性があります。
次のコードでは、テーマが常に正しいバージョンのjQueryをロードすることを確認します。最初にどのバージョンWPが使用しているかを検索し、次にGoogleからロードするバージョンを検索します。
$wp_jquery_version = $GLOBALS['wp_scripts']->registered['jquery-core']->ver;
$jquery_version = ( $wp_jquery_version == '' ) ? '1.8.3' : $wp_jquery_version; // fallback, just in case
wp_deregister_script('jquery');
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/'. $jquery_version .'/jquery.min.js', $jquery_version, false );
wp_enqueue_script('jquery');