解決したいこと
- WordPressでjQueryを動かしたい
起こっている問題
- WordPressでjQueryを動かす方法を一通り調べて適用させたつもりだがなぜか動かない
- JavaScriptのファイルやWordPress独自のjQueryファイルは読み込まれていて、jQueryも「jQuery(function($) {});」で囲ったが、なぜかコンソールに「TypeError: $ is not a function」とエラーがでる
- 上記のエラーは$をすべてjQueryに置き換えても発生する
現状
各ファイルの記述は以下のようになっていて、テンプレートファイルも1から作り始めた段階なのでこれ以外に関係している記述はないと思われます。
また、XAMPPでローカル環境で行っています。
また、header.phpには<?php wp_head(); ?>も記述しております。
以下は使っているファイル内容抜粋です。
php
1// functions.php 2<?php 3 // jQuery 読み込み 4 function add_jQuery() { 5 wp_enqueue_script( 'jquery' ); 6 } 7 add_action( 'wp_enqueue_scripts', 'add_jQuery' ); 8 9 function add_css_js() { 10 //css読み込み 11 wp_enqueue_style('normalize', get_template_directory_uri().'/css/normalize.css'); 12 wp_enqueue_style('style', get_template_directory_uri().'/css/style.css'); 13 14 //javascript読み込み 15 wp_enqueue_script('hamburger', get_template_directory_uri().'/js/hamburger.js', array( 'jquery' )); 16 } 17 add_action('wp_enqueue_scripts', 'add_css_js'); 18?>
javascript
1// hamburger.js(ハンバーガメニュー用のファンクション) 2jQuery(function($) { 3 $(function () { 4 $('#js-btn-hamburger').click(function () { 5 $('body').toggleClass('is-drawer-active'); 6 7 if ($(this).attr('aria-expanded') == 'false') { 8 $(this).attr('aria-expanded', true); 9 } else { 10 $(this).attr('aria-expanded', false); 11 } 12 }); 13 }); 14});
また、デベロッパーツールで確認したところ、headタグには以下のようにjQueryとJavaScriptが読み込まれています。
html
1<script type="text/javascript" src="http://localhost/wordpress/wp-includes/js/jquery/jquery.min.js?ver=3.5.1" id="jquery-core-js"></script> 2<script type="text/javascript" src="http://localhost/wordpress/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.3.2" id="jquery-migrate-js"></script> 3<script type="text/javascript" src="http://localhost/wordpress/wp-content/themes/testtheme/js/hamburger.js?ver=5.7.1" id="hamburger-js"></script>
考え
- ローカル環境なのでhttpとなっておりそれが影響している?(試せていません)
- 書き出されたhamburger.jsのバージョンがwordpressのバージョンになっているのが関係している?(バージョンの指定方法などを後日調べて試してみます)
問題の原因っぽいものが分かりました
デベロッパーツールから
HTML
1<script type="text/javascript" src="http://localhost/wordpress/wp-content/themes/concentcafe-original01/js/hamburger.js?ver=5.7.1" id="hamburger-js"></script>
を開いてみると、
行った変更が反映されておらず、
js
1$(function () { 2$('#js-btn-hamburger').click(function () { 3$('body').toggleClass('is-drawer-active'); 4 5if ($(this).attr('aria-expanded') == 'false') { 6$(this).attr('aria-expanded', true); 7} else { 8$(this).attr('aria-expanded', false); 9} 10}); 11});
となったままで、「jQuery(function($){});」で囲った変更が反映されていません。
- VS CODEで変更を保存して、ブラウザのリロードボタンを押しているのですが、変更されない理由が分かりません。
回答1件
あなたの回答
tips
プレビュー