FacebookPixelの配信にGoogleタグマネージャーを使用しています。
次に、このようなコードを使用してイベントを発生させます
<body>
...
<script>
fbq('track', 'ViewContent', {
content_type: 'product',
content_ids: ['1234'],
content_name: 'ABC Leather Sandal',
content_category: 'Shoes',
value: 0.50,
currency: 'USD'
});
</script>
</body>
しかし、コードを実行すると、Facebook Pixelが非同期で読み込まれ、fbqがまだ利用できないため、エラーが発生しました。
Uncaught ReferenceError:fbqが定義されていません
私は何をすべきか?
タグシーケンス機能を使用します。これにより、事前定義された順序でタグを起動できます。後続のタグは、実行される前に前のタグを待機します。
FB初期化コードをロードするタグを作成します。タグの起動オプションで[ページごとに1回]を選択します(複数のタグで使用されている場合でも、これを1回だけ読み込む必要があります)。
Facebookのイベントタグに移動します。詳細設定で、タグの順序付けオプションを探します。次のように設定します。
(Facebook initがFBライブラリをロードするタグである場合、標準のbootstrapコード)を使用すると想定しています。最後のチェックボックスを有効にすると、セットアップタグが失敗した場合に起動しません。
FB bootstrapコードはコマンドキューを使用してfbqオブジェクトをセットアップするため、データをfbqにプッシュできます。ライブラリがまだダウンロードしている場合でも、データはコマンドキューに入り、呼び出しはライブラリがダウンロードされたときに実行されます。
タグシーケンスにより、イベントの前にfbqオブジェクトが設定されていることが確認されます。これが唯一のFBイベントである場合は、トラブルを回避し、イベントコードの上にローダーを貼り付けるだけです。
Eikeのアプローチを機能させることができず、以下の「ダーティな回避策」になりました(基本的には、fbqが開始されるまで待機します)。
<script>
function waitForFbq(callback){
if(typeof fbq !== 'undefined'){
callback()
} else {
setTimeout(function () {
waitForFbq(callback)
}, 100)
}
}
waitForFbq(function () {
fbq('track', 'Registered');
})
</script>
多分それは誰かを助けるでしょう
Vir usの解決策は7月5日12:48から私にとって魅力のように機能します!ありがとう:-)
編集:私の場合、Wordpressサイトで同様の何かを実装する必要がありました。GTMはFBピクセルでヘッダーに読み込まれます。したがって、タグを開いた直後に配置されたコードは次のようになります。
<script>
function waitForFbq(callback){
if(typeof fbq !== 'undefined'){
callback()
} else {
setTimeout(function () {
waitForFbq(callback)
}, 100)
}
};
waitForFbq(function() {
fbq('track', 'ViewContent', {content_name: '<?php the_title(); ?>'});
});
</script>
同じエラーがありました-結局、それはすべてシーケンスに関するものでした。
wordpressサイトのWPプラグインを介してタグマネージャーを介して使用される場合、ピクセルはデフォルトでフッターに読み込まれるため、宣言される前にfbq変数が使用されますフッターでは、本文では認識されませんでした: Googleタグマネージャーfor WordPress options
さまざまな設定を試しましたが、最終的にプラグインの使用をあきらめました-ページビルダーのスクリプトセクションを使用してヘッダーセクションにプラグインを挿入するだけです(Thrive Architect = TA): TAのカスタムスクリプト設定 およびこれですべて正常に動作します!