条件逻辑和自定义 FB Pixels 集成到 WooCommerce 中

2024-02-18

我正在寻求:

1) 在 WooCommerce 结帐页面上触发 FB Pixel - 即相关事件。 (即添加到购物车/开始结账)

2) WooCommerce 的结账页面/感谢页面上的火力购买活动。

3) 在不属于上述两个网站的整个网站上保持 FB Pixel 正常。

有人告诉我条件逻辑是可行的方法。然而,我对如何将下面的钩子(在我的第二篇文章中)合并到我的“elseif”声明中感到困惑。

脚本#1

add_action( 'wp_head', 'facebook_tracking' );

function facebook_tracking() {

if ( is_checkout() && is_wc_endpoint_url( 'order-received' ) ) {

// TARGET THE CHECKOUT PAGE WITH is_checkout()
// THEN EXCLUDE THE THANK YOU PAGE USING CONDITIONAL LOGIC

    ?>
        <!-- Facebook Pixel Code for Initiated Checkout -->
     <script>
  !function(f,b,e,v,n,t,s)
  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  n.queue=[];t=b.createElement(e);t.async=!0;
  t.src=v;s=b.getElementsByTagName(e)[0];
  s.parentNode.insertBefore(t,s)}(window, document,'script',
  'https://connect.facebook.net/en_US/fbevents.js');
  fbq('init', 'XXX');
  fbq('track', 'PageView');
  fbq('track', 'InitiateCheckout');
  fbq('track', 'AddToCart');
</script>
<noscript><img height="1" width="1" style="display:none"
  src="https://www.facebook.com/tr?id=[]&ev=PageView&noscript=1"
/></noscript>
        <!-- End Facebook Pixel Code -->
  // NOW MY THANK YOU PAGE - I WANT TO EMBED AN ADDITIONAL ADD_ACTION BUT HOW? - SEE MY NEXT MESSAGE
    <?php } elseif ( is_wc_endpoint_url( 'order-received' ) ) { ?>
  <!-- Facebook Pixel Code for Conversions -->
<script>
  !function(f,b,e,v,n,t,s)
  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  n.queue=[];t=b.createElement(e);t.async=!0;
  t.src=v;s=b.getElementsByTagName(e)[0];
  s.parentNode.insertBefore(t,s)}(window, document,'script',
  'https://connect.facebook.net/en_US/fbevents.js');
  fbq('init', 'XXX');
  fbq('track', 'PageView');
  fbq('track', 'Purchase', {
    value: <?php echo $order->get_total(); ?>,
    currency: 'AUD',
  });

</script>
<noscript><img height="1" width="1" style="display:none"
  src="https://www.facebook.com/tr?id=1552143158136128&ev=PageView&noscript=1"
/></noscript>
<!-- End Facebook Pixel Code -->
 <?php } else { // FINALLY WE TARGET ALL THE OTHER PAGES ?>
<!-- Facebook Pixel Code for Rest of Website -->
<script>
  !function(f,b,e,v,n,t,s)
  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  n.queue=[];t=b.createElement(e);t.async=!0;
  t.src=v;s=b.getElementsByTagName(e)[0];
  s.parentNode.insertBefore(t,s)}(window, document,'script',
  'https://connect.facebook.net/en_US/fbevents.js');
  fbq('init', 'XXX');
  fbq('track', 'PageView');
</script>
<noscript><img height="1" width="1" style="display:none"
  src="https://www.facebook.com/tr?id=[]&ev=PageView&noscript=1"
/></noscript>
        <!-- End Facebook Pixel Code -->
    <?php
} 

}

脚本#2

如何将以下挂钩嵌入到我的 elseif 语句中:

    function purchase_analytics( $order_id ) {
    $order = new WC_Order( $order_id );
    $currency = $order->get_order_currency();
    $total = $order->get_total();
    $date = $order->order_date;
    $checkout_subtotal = $order->get_subtotal();
    ?>
<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
fbq('init', 'XXX');
</script>
<script>
fbq('track', 'Purchase', {
value: <?php echo $order->get_total(); ?>,
currency: 'AUD'
});
</script>
<noscript><img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=[]&ev=PageView&noscript=1"
/></noscript>
<!-- DO NOT MODIFY -->
<!-- End Facebook Pixel Code -->
    <?php   
}
add_action( 'woocommerce_thankyou', 'purchase_analytics' );

任何帮助将非常感激!

洛伊克请看下面:

add_action( 'wp_head', 'facebook_tracking' );
function facebook_tracking() {

    // 1. Common script -  On ALL Pages --> works fine
    $init = 'XXX';
    ?>
     <script>
    !function(f,b,e,v,n,t,s)
    {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
    n.callMethod.apply(n,arguments):n.queue.push(arguments)};
    if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
    n.queue=[];t=b.createElement(e);t.async=!0;
    t.src=v;s=b.getElementsByTagName(e)[0];
    s.parentNode.insertBefore(t,s)}(window, document,'script',
    'https://connect.facebook.net/en_US/fbevents.js');

    fbq('init', <?php echo $init; ?>);
    fbq('track', 'PageView');
    <?php

    // 2. On Checkout --> works fine, how do I call for values of the below, particularly InitiateCheckout?
    if( ! is_wc_endpoint_url( 'order-received' ) && is_checkout() ) :
    ?>
    fbq('track', 'InitiateCheckout');
  value:
  currency: ''
    fbq('track', 'AddToCart');
    <?php

    // 3. On Order received --> not currently firing.
    elseif( is_wc_endpoint_url( 'order-received' ) ) :

    global $wp;

    // Get the Order ID from Query vars
    $order_id  = absint( $wp->query_vars['order-received'] );
    if ( $order_id > 0 ){

    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );
      // is this ok? foreach( $order->get_items() as $item_id => $item ){
        // is this ok? $product = $item->get_product();
        // is this ok? $product_id = $item->get_product_id();
    $currency = $order->get_order_currency();
    $total = $order->get_total();
    $date = $order->order_date;
      }
    ?>
    fbq('track', 'Purchase', {
        value:    <?php echo $order->get_total(); ?>,
        currency: <?php echo $order->get_order_currency(); ?>,
      content_ids: <?php echo $item->get_product_id(); ?>,
      // content_type: ???
    });
    <?php
      }

    // 4. Other pages (EXCEPT order received and checkout) --> did not work originally but want to fire this on my upsell page (1 specific URL). Custom Event based.
    else ; //was needing ; not :
    ?>
    fbq('track', 'CUSTOMEVENT');
    <?php
    endif;
    ?>
    </script>
    <noscript><img height="1" width="1" style="display:none"
  src="https://www.facebook.com/tr?id=[XXX]&ev=PageView&noscript=1"
/></noscript>
<?php
  }
}

感谢你的帮助。


Updated- 在你的挂钩函数中挂钩wp_head钩子,你的两个条件错误地瞄准了“收到订单”,所以:

if ( is_checkout() && is_wc_endpoint_url( 'order-received' ) ) {

是同一件事那只是:

if ( is_wc_endpoint_url( 'order-received' ) ) {

有一些重复的(您可以在任何地方使用的通用脚本)......

似乎还有一些其他错误...尝试以下重新访问的代码:

add_action( 'wp_head', 'facebook_tracking' );
function facebook_tracking() {

    // 1. Common script -  On ALL Pages
    $init = 'XXX';
    ?>
     <script>
    !function(f,b,e,v,n,t,s)
    {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
    n.callMethod.apply(n,arguments):n.queue.push(arguments)};
    if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
    n.queue=[];t=b.createElement(e);t.async=!0;
    t.src=v;s=b.getElementsByTagName(e)[0];
    s.parentNode.insertBefore(t,s)}(window, document,'script', 
    'https://connect.facebook.net/en_US/fbevents.js');

    fbq('init', <?php echo $init; ?>);
    fbq('track', 'PageView');
    <?php

    // 2. On Checkout
    if( ! is_wc_endpoint_url( 'order-received' ) && is_checkout() ) : 
    ?>
    fbq('track', 'InitiateCheckout');
    <?php 

    // 3. On Order received 
    elseif( is_wc_endpoint_url( 'order-received' ) ) : 

    global $wp;

    // Get the Order ID from Query vars
    $order_id  = absint( $wp->query_vars['order-received'] );
    if ( $order_id > 0 ){

    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id ); 
    ?>
    fbq('track', 'Purchase', {
        value:    <?php echo $order->get_total(); ?>,
        currency: <?php echo $order->get_order_currency(); ?>,
    });
    <?php 
    } 

    // 4. Other pages (EXCEPT order received and checkout)
    else : 
    ?>
    fbq('track', 'AddToCart');
    <?php 
    endif;
    ?>
    </script>
    <noscript><img height="1" width="1" style="display:none"
  src="https://www.facebook.com/tr?id=1552143158136128&ev=PageView&noscript=1"
/></noscript>
    <?php
    }
}

代码位于活动子主题(或活动主题)的 function.php 文件中。它应该有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

条件逻辑和自定义 FB Pixels 集成到 WooCommerce 中 的相关文章

  • 使用 DOJO 自动完成文本框

    我正在寻找一种使用 DOJO 进行文本框自动建议的简单方法 我将查询的数据库表 使用 PHP 脚本 以 JSON 形式返回 有超过 100 000 条记录 因此这确实不应该采用 FilteringSelect 或 ComboBox 的形式
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • PHP cURL 在本地工作,在 AWS 服务器上出现错误 77

    最新更新 脚本作为管理员用户通过 SSH shell 作为 php script php 成功运行 当由 nginx 用户运行时 curl 命令无法执行 https 请求 所以我猜测这是nginx用户无法正确使用curl的问题 我已经检查了
  • 在 PHP 中模拟 jQuery.ajax 请求

    我必须在 PHP 中模拟 AJAX 请求 就像在 jQuery 中一样 我当前的代码在这里 原始 AJAX 调用 不得修改 ajax type POST url someFile php data data success function
  • 如何在 Zend Framework 中处理移动设备?

    我接手了一个噩梦般的项目 我正在迁移一个写得很差的站点 并慢慢地将其迁移到 Zend Framework 应用程序中 不幸的是 我没有时间做补救工作 使这变得可以忍受 也许是一个或两个模型 我现在被告知该网站很快就会有移动版本 建议是克隆旧
  • PHP - 扩展 __construct

    我想知道你是否可以帮助我 我有两个类 一个扩展了另一个 B 类将由各种不同的对象扩展 并用于常见的数据库交互 现在我希望 B 类能够处理其连接和断开连接 而无需来自 A 类或任何外部输入的指示 据我了解 问题是扩展类不会自动运行其 cons
  • 将数据库中的用户 ID 添加到 Codeigniter 中的会话数据中?

    我是 CodeIgniter 的新手 在从数据库添加用户 ID 用户登录后 到会话数据时遇到问题 这是我的代码问题 之前可能会在 SOF 上被问到 在付出了所有努力之后 我问这个 登录模型
  • Yii2 中 init() 和 __construct() 方法有什么区别

    init 方法 public function init construct method public function construct 那么 它们之间有什么区别 应该使用哪一个呢 init 是从以下对象扩展的任何对象的方法yii b
  • 删除 woocommerce 店面主页标题 php

    我正在使用 woocommerce 的店面主题 我需要用 php 删除主页标题 h1 我知道 css 解决方案 但我不想使用它 因为我想将 h1 添加到该页面的其他位置 并且在一个页面中包含 2 个 h1 对 seo 不利页 我也知道删除页
  • 如何在 Smarty 中打印 json

    我从 api 获取 json 如何使用 Smarty 打印 json Json格式 first name jinu last name mk loginid email protected cdn cgi l email protectio
  • 具有更改用户代理上下文的 file_get_contents 不起作用

    我正在尝试获取页面的阅读数和点赞数 网址是 https mp weixin qq com s NPavBeHc8VdWXeSL6kfLRg https mp weixin qq com s NPavBeHc8VdWXeSL6kfLRg 您必
  • MySQL 数据库无法在 XAMPP for Mac 上启动

    突然我在 mac 上遇到了这个问题 我无法启动我的 MySQL 数据库 我只能启动 ProFTPD 和 Apache Web Server 这是应用程序日志 Starting all servers Starting MySQL Datab
  • 我怎样才能让这个脚本在 WordPress 上运行?

    我有这个脚本 document ready function text1 click function this hide 代码html div class div1 p class text1 text to appear when th
  • UTF-8、PHP、Win7 - 现在是否有解决方案可以使用 php 在 Win 7 上保存 UTF-8 文件名?

    更新 只是为了不让您阅读所有内容 PHP 开头 7 1 0alpha2 在 Windows 上支持 UTF 8 文件名 感谢阿纳托尔 贝尔斯基 根据 stackoverflow 上的一些链接 我找到了部分答案 https stackover
  • magento成功页面变量

    我正在尝试捕获一些 magento 成功页面变量以传递给我们的广告公司 到目前为止 我已经得到了这个 但变量没有输出任何内容 数据需要采用以下格式 price1 price2 price3 qty1 qty2 qty3 sku1 sku2
  • 简单的dom php解析获取自定义数据属性值

    HTML div class something ddsf PHP foreach dom gt find something data rel as this var dump this gt attr 我尝试了这个但错误 在其文档中找不
  • 更改API数据输出的布局

    我是 API 集成和 PHP 的新手 我最近将 VIN 解码器集成到我的应用程序中 在输入框中输入车辆的 VIN 选择提交 然后就会显示 API 数据库中有关该车辆的所有信息 数据存储为关联数组 其中包含类别及其相应元素 例如 对于 VIN
  • 使用 PHP 和 OAuth 访问 SkyDrive

    我想使用 PHP 访问 skyDrive 我想检索文件和文件夹列表 下载 上传和删除文件 我有一个 microsoft dev clientID 和 clientSecret 有人可以帮助我开始使用 OAuth 连接到 skyDrive 并
  • 使用来自另一个数据库的选择查询更新 mysql 表

    我有两个数据库 我想用另一个数据库表中的值更新一个表 我正在使用以下查询 但它不起作用 UPDATE database1 table1 SET field2 database2 table1 field2 WHERE database1 t
  • 如何在数据列表 HTML PHP 中设置选择

    您好我想知道是否有一种方法可以在数据列表中设置选定的值 我想要这样的东西

随机推荐