原因
直接的な原因としては以下のこのコードが存在するから。
jQuery.noConflict();
なんでこんなものを使うのか??
色々なjavascriptを使っていると$が干渉しあうことがあるのでその時の$メソッドのコンフリクトが発生しないようにするためのものが、noConflict()です。
解決方法
$を再度定義する
大体こんな感じの書き出しになってると思いますけど、
$(function(){
// コード
});
こんな感じに書き直します。
jQuery(function($){
// コード
});
$を全てjQueryに変更する
$(function(){
$('#sample').on('click', 'a', function(){
// 色々...
});
});
下記に変更します。
jQuery(function(){
jQuery('#sample').on('click', 'a', function(){
// 色々... この中も$をjQueryへ変更します。
});
});
WordPressで「Uncaught TypeError: $ is not a function」が発生する時
別にこれはそのままでもよければ使ってしまって全く問題ないです。
ただ、少々面倒なこともあるので、それをなくしたいという要望があれば実行してしまっても良い方とも思います。
解決方法
wp_head()より先に下記のように書き込む。
wp_deregister_script( 'jquery' );
wp_enqueue_script('jquery','http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js');
wp_head();
注意点もあるよ
まず当然ですが、コンフリクトを起こす可能性があるということですね。
もう一つは上記をやる際の問題点として、バージョンを気をつけましょうということです。テーマファイルによってはソースコード自体が古いものに対応しているものもあるでしょうから、そこは調査の上で行ってください。