WordPressで「ネット」というタグが指定されている場合のみ発火させたいタグがあり、Google Tag Managerの変数、DOM要素を使って分岐させようとしました。
しかし、なぜか発火する場合としない場合があります。
確認すると、発火しないページでは最初のタグが「ネット」以外のものになっており、GTMではそれを評価していました。
DOM要素変数では複数マッチした場合に最初の要素しか処理されない
これ、class指定できる意味あるの?思いましたが、もしかしたら元々ID指定しかできなかったのかもしれません。
document.querySelectorAll()
じゃなくてdocument.querySelector()
を使っているのかも。
カスタムJavascriptで対応
WordPressのテーマに手を入れないでGTMだけで解決するならこんな感じ
document.querySelectorAll('.single-EntryMeta_Link').forEach((el)=>{
if(el.innerHTML == 'ネット'){
return true;
}
});
return false;
タグの属性を追加して対応
もうひとつのやり方が、タグの属性で指定する方法です。
<span class="single-EntryMeta_Link">おすすめ</span>
<span class="single-EntryMeta_Link">ネット</span>
の様なマークアップでWordPressのタグが出力されている場合、
<span class="single-EntryMeta_Link" data-tag="おすすめ">おすすめ</span>
<span class="single-EntryMeta_Link" data-tag="ネット">ネット</span>
みたいにすれば、CSSセレクタで要素の値指定で取得できます。