WordPressのカスタムHTMLにJavascriptを直書きで&が&#038に勝手に変換されてエラーがでた際の解決法

Nです.
タイトルのようなエラーが出てしばらく沼にはまっていました.

次同じことになったときようにメモしておきたいと思います.

スポンサーリンク

エラーの詳細

症状としては&&で論理積を計算しようとしたときになぜかforループがそのコードの前にある時にエラーが出るというものでした.

以下のような単純なコードも動きませんでした.

for (i = 0; i < 10; i++) {}
console.log(true && true);

エラーとしては”‘#’ not followed by identifier”という表示でした.

よくよくプレビュー表示したページのソースを見てみるとエディタでは&と書いていた場所が勝手に&#038になっていました(なぜ…).

しかし,forループをコメントアウトすると動きました(ほんと不思議な感じです).

ただ,forループは使いたいので別の方法を調べました(このページを参考にしました).

スポンサーリンク

jsファイルを読み込む形で使用

WordPressではページでJavascriptを直書きする方法以外にも外部にjsファイルを作成してそれを読み込むことができます.

WordPressでjsファイルを読み込む際にはwp_enqueue_scriptという関数を使用するようです.

そこでWordpressのfunction.phpに以下のコードを追加しました.
function.phpは外観->テーマファイルエディタから編集することができます.

function my_scripts_method() {
	if(is_page('jsファイルを読み込みたいページのスラッグ'))//この行は特定のページでのみjsを読み込む用
	wp_enqueue_script(
		'custom_script',
		get_template_directory_uri() . 'theme/テーマ名を基準としたjsファイルのパス',
		array(),
		false,
		true
	);
}
add_action('wp_enqueue_scripts', 'my_scripts_method');

wp_enqueuw_scriptのオプションの詳細などはこのページが大変参考になります.

if(is_page(‘jsファイルを読み込みたいページのスラッグ’))を書かない場合はすべてのページでこのjsファイルが読み込まれることになります.

これで一応エラーを回避することができました.

原因はわからないままですが…

コメント

タイトルとURLをコピーしました