0
0

GTMの変数、DOM要素でclass指定すると最初の要素しか処理してくれない

Posted at

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セレクタで要素の値指定で取得できます。

スクリーンショット 2023-12-08 15.07.26.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0