- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有代码将订单数据发送到外部送货服务,并在那里创建新订单。我注意到,如果您重新加载“谢谢”页面,代码将再次工作并发送相同的信息。结果:在支持服务中创建了多个相同的订单。我应该在代码中添加什么才能避免这种情况发生?
add_action('woocommerce_thankyou', 'send_order_to_delivery');
function send_order_to_delivery( $order_id ){
// Get an instance of the WC_Order object
$order = wc_get_order( $order_id );
$order_data = $order->get_data();
$order_id = $order_data['id'];
// Send data
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://app.example.com/api/index.php?new_order");
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
curl_close($ch);
$decoded = (array) json_decode($result);
// Output
if( isset($decoded['result']) && $decoded['result'] == 'success' && isset($decoded['order_id']) && !empty($decoded['order_id']) ){
update_post_meta( $order_id, 'delivery_order_id', esc_attr( $decoded['order_id'] ) );
}
}
最佳答案
尝试以下操作,我们检查 'delivery_order_id'
meta_key
的订单元数据中是否已存在某些值,避免执行此任务两次或多次:
add_action('woocommerce_thankyou', 'send_order_to_delivery');
function send_order_to_delivery( $order_id ){
// Checking if this has already been done avoiding reload
if( get_post_meta( $order_id, 'delivery_order_id', true ) )
return; // Exit if already processed
// Get an instance of the WC_Order object
$order_data = $order->get_data();
$order_id = $order_data['id'];
// Send data
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://app.example.com/api/index.php?new_order");
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
curl_close($ch);
$decoded = (array) json_decode($result);
// Output
if( isset($decoded['result']) && $decoded['result'] == 'success' && isset($decoded['order_id']) && !empty($decoded['order_id']) ){
update_post_meta( $order_id, 'delivery_order_id', esc_attr( $decoded['order_id'] ) );
}
}
代码位于事件子主题(或事件主题)的 function.php 文件中。它应该能彻底解决您的问题。
关于php - 防止在 Woocommerce 谢谢钩子(Hook)中多次处理数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51091238/
//习题 写一个计算参数平均值的函数 func cacuAver(numbers:Int...)->Int{ var average=0 var sum=0 if (numbe
我想通过添加以下语句在进入或返回功能后打印一些有用的消息。 printf("enter %s\n", __FUNCTION__); 在返回指令前添加如下语句。 printf("exit %s\n",
出于某种原因,我想将所有 UITableViewDelegate 方法转发给另一个对象。这是我写的代码,但是因为 UITableViewDelegate 中有太多方法。我必须写很多 if else 比
我想通过帖子ID或帖子URL将联系表格7重定向到“谢谢”页面。因此,我可以跟踪单个帖子的转化目标。 对于示例:我有“项目详细信息”页面,这里只有一位联系人。因此,它只能重定向一个“谢谢”页面。但对于每
我正在 Codesignal 上做一个算法。 对于 s = "abacabad",输出应该是firstNotRepeatingCharacter(a) = 'c'。 字符串中有 2 个不重复的字符:“
my firebasebase database structure 我在这个应用程序中创建了一个 android 应用程序,我想计算唯一的子值。 我在数据库引用中创建了 for 循环并分配了全局变量
我直接从 Redux 文档中获取了这一点: const logger = store => next => action => { console.group(action.type) con
我有一个功能齐全的联系表单,在提交时会显示“谢谢”消息。唯一的问题是感谢消息显示在表单上方,因此当用户单击它时,消息是否已发送并不明显。 我的表格在这里: http://impressify.co/b
所以我试图将文本放在右边,图像放在它旁边,这样我在左右边距上也有一些空间(相等)。我被像素和宽度所困,所以当我缩小窗口时它没有响应并且不能很好地包裹。我也在媒体查询中添加了 100% 宽度,但即便如此
两个代码示例都是求和公式的: 代码示例 1 (defund sigma (func n) (cond ((= n 1)(funcall func 1) (t (+ (s
我需要使用 Cypress 测试我在以下 JSON 中拥有的属性。我想我在接触每个属性并验证它们时遇到了问题。 describe('POST method', () => { it('get
我绝对是编码初学者。我从 ChatGPT 获取代码来安装 Anaconda。但是,我停留在最后一步。我尝试了几乎所有可能的 yes 变体。某人可以帮助我吗?我怎么能对最后一个问题写是?谢谢。 anac
在Hadoop命令行中,将我使用的所有命令保存在日志中的代码是什么(以任何格式保存执行的事务的历史记录)以供后续引用。谢谢 最佳答案 我认为没有直接的hadoop命令可以执行此操作,但是您始终可以使用
package gui; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class gui7 imp
我绝对是编码初学者。我从 ChatGPT 获取代码来安装 Anaconda。但是,我停留在最后一步。我尝试了几乎所有可能的 yes 变体。某人可以帮助我吗?我怎么能对最后一个问题写是?谢谢。 anac
public static void main(String[] args) { try { File dir = new File("D:\\WayneProject
数据是否更新,显示抱歉未插入。请检查一下。谢谢您 query($result)===TRUE){ echo 'Data Updated Successfully'; }
在下面的 HTML 中,我尝试使用无序列表 (ul) 创建水平导航。我尝试使用 W3Schools 作为指南,但它似乎不起作用;我确定我只是忽略了一些东西。 Here's what it is sup
我知道如何将 sequelize 与 node、angular、express 等一起使用...但我才刚刚开始使用 mongoose 学习平均堆栈的 M 部分。问题是我不知道 mongodb 在组织数
PS C:\Users\BM KHAN\react-guide> npm install --save radium npm 错误!代码 ERESOLVE npm 错误! ERESOLVE 无法解析依
我是一名优秀的程序员,十分优秀!