閲覧ありがとうございます。
WordPressでURLを呼び出しているのに動かないを解消
jsを使用したくてfunction.phpにコードを書いたのに動かない…
そんな問題解決につながれば嬉しいです。
jsが動かない問題と解消の経緯
私はテーマを「SWELL」と「Lightning」の二つを使っていますが、最近cssアニメーションの実行タイミングなどjsを使いたい場面があります。
「SWELL」ではそのままjsコードを記述・反映できるのですが「Lihgtning」ではできないのでjsファイルを用意してfunction.phpで呼び出すコードを記述して実行しようとしました。
ところがファイルはあるはずなのに404エラー(URLが見つからない)。試行錯誤の結果、今回の解決策につながりました。
同じトラブルに会うこともあるかと思いますので備忘録として残しておきます。
結論(動作するphpコードはこちら)
WordPressにはディレクトリのURLを取得する関数があります。
その関数を使って初めに作ったjsファイル読み込みコードがこちら↓
/*jsファイル読み込み*/
add_action( 'wp_enqueue_scripts', function () {
wp_enqueue_script(
'my-custom_script',
get_template_directory_uri() . '/js/custom.js', //ディレクトリ内のjsフォルダにあるjsファイルを指定
array('jquery'), // 依存関係を指定
null, // バージョン番号を指定(nullの場合はバージョン管理しない)
true // フッターで読み込む
);
} );
/*ここまで*/
これでは動作しませんでした。そして修正後がこちら↓
/*jsファイル読み込み*/
add_action( 'wp_enqueue_scripts', function () {
wp_enqueue_script(
'my-custom_script',
get_stylesheet_directory_uri() . '/js/custom.js', //ディレクトリ内のjsフォルダにあるjsファイルを指定
array('jquery'), // 依存関係を指定
null, // バージョン番号を指定(nullの場合はバージョン管理しない)
true // フッターで読み込む
);
} );
/*ここまで*/
5行目の“get_template_directory_uri()”を“get_stylesheet_directory_uri()”に変更して解決しました。
問題は関数の間違い
ディレクトリ内のURLを呼び出す関数の間違いが今回のエラーの原因でした。
関数①「get_template_directory_uri()」
この関数は親テーマのディレクトリのURLを取得します。
子テーマを利用していない場合や親テーマのリソースを呼び出したい場合にはこの関数で良いのですが、私は子テーマのディレクトリにファイルを格納しているのにもかかわらずこちらのコードを使ったことでエラーが出ていました。
関数②「get_stylesheet_directory_uri()」
現在のテーマ(子テーマが有効な場合は子テーマ)のディレクトリのURLを取得します。
親テーマが有効な場合でも子テーマのリソースを優先して取得します。こちらの関数を使うことで今回のエラーは解決しました。
今回は以上になります。なにかの参考になれば嬉しいです。
コメント