
本教程旨在指导用户如何在woocommerce感谢页面中,利用wordpress的动作钩子(如`wp_footer`),安全有效地获取订单详情,并将其动态注入到javascript跟踪脚本中。通过php代码获取订单id、总金额、商品id和名称等信息,并将其格式化后传递给外部营销或分析系统,确保数据传输的准确性和完整性,避免直接在模板中嵌入复杂逻辑。
在与联盟营销公司或外部分析系统集成时,通常需要在用户完成订单后的“感谢页面”(Thank You Page)上发送订单相关数据。这通常通过嵌入JavaScript代码实现,该代码需要动态获取当前订单的详细信息,如订单号、总金额、商品ID和名称等。
初学者常遇到的挑战是,在WordPress和WooCommerce环境中,直接在页面内容或使用短代码嵌入PHP和JavaScript混合代码,可能无法正确获取到订单上下文,导致PHP变量无法解析或解析错误。这是因为感谢页面在加载时,订单数据需要通过特定的WooCommerce/WordPress查询变量才能被正确识别和访问。
解决此问题的关键在于使用WordPress的动作钩子(Action Hooks),尤其是在wp_footer或wp_head钩子上执行自定义PHP函数。这些钩子允许我们在页面渲染的不同阶段插入自定义代码,并且在这个阶段,WooCommerce的全局订单对象通常已经可用。
wp_footer钩子通常是更好的选择,因为它将JavaScript代码放置在页面内容的末尾,有助于提高页面加载速度,并确保在脚本执行时DOM元素已基本加载完成。
立即学习“Java免费学习笔记(深入)”;
以下是实现此功能的具体步骤和代码示例。
我们需要编写一个PHP函数,该函数将负责:
代码示例:
将以下PHP代码添加到您的主题的functions.php文件,或者更推荐使用“Code Snippets”等插件进行管理。
add_action( 'wp_footer', 'embed_marketing_script_with_order_details', 5 );
function embed_marketing_script_with_order_details() {
global $wp;
// 检查当前页面是否为WooCommerce的订单接收页面
if ( isset( $wp->query_vars['order-received'] ) ) :
// 获取订单ID
$order_id = absint( $wp->query_vars['order-received'] );
// 获取WC_Order对象
$order = wc_get_order( $order_id );
// 确保订单对象有效
if ( ! $order ) {
return;
}
// 初始化商品ID和商品名称数组
$product_ids = [];
$product_names = [];
// 遍历订单中的所有商品项
$order_items = $order->get_items();
foreach ( $order_items as $order_item ) {
$product_ids[] = $order_item->get_product_id();
$product_names[] = $order_item->get_name();
}
// 将商品ID和名称数组转换为以 '|' 分隔的字符串
$product_ids_str = implode( '|', $product_ids );
$product_names_str = implode( '|', $product_names );
?>
<script id="wc-checkout-custom-tracking" type="text/javascript">
var oeyaPostParam = {
code : '', // 联盟营销公司提供的固定值或空值
cookie_name : '', // 联盟营销公司提供的固定值或空值
mcode : '', // 联盟营销公司提供的固定值或空值
oid : '<?php echo $order->get_order_number(); ?>', // 订单号
amount : '<?php echo $order->get_total(); ?>', // 订单总金额
bid : '', // 联盟营销公司提供的固定值或空值
gno : '<?php echo esc_js( $product_ids_str ); ?>', // 商品ID列表,以 '|' 分隔
gname : '<?php echo esc_js( $product_names_str ); ?>', // 商品名称列表,以 '|' 分隔
unit : ' ', // 联盟营销公司提供的固定值或空值
odate : '<?php echo $order->get_date_created()->format('Y-m-d H:i:s'); ?>', // 订单创建时间
};
(function() {
var oeyasc = document.createElement('script');
oeyasc.type = 'text/javascript';
oeyasc.async = true;
oeyasc.src = 'https://www.conn.tw/track/oeya_jss2s_v1.0.js'; // 外部跟踪脚本URL
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(oeyasc, s);
})();
</script>
<?php
endif;
}代码解析:
通过利用WordPress的动作钩子和WooCommerce提供的API,我们可以安全、高效地在感谢页面上获取订单详情,并将其动态注入到JavaScript跟踪脚本中。这种方法不仅保证了数据的准确性,也遵循了WordPress的最佳实践,使得代码更易于维护和扩展。正确实施后,您将能够成功地将WooCommerce订单数据传输到联盟营销或其他外部系统中。
以上就是在WooCommerce感谢页嵌入JavaScript并获取订单详情的专业指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号