我使用WooCommerce和WordPress,我想在付款验证时更新一个购买单一产品的自定义字段,并显示感谢页面.

我从这个代码开始,但它暂时不起作用.

add_action( 'woocommerce_thankyou', 'checkout_update_user_meta' );
 
function checkout_update_user_meta( $order_id ) {
   $order = new WC_Order( '$order_id' );
   $user_id = $order->get_user_id();
   $items = $order->get_items();

foreach ( $items as $item ) {

$product_id = $item['product_id'];

if ( $product_id == '777' ) {    
      update_user_meta( $user_id, 'masterclass-1', 'ok' );
  }
}
}

推荐答案

add_action( 'woocommerce_thankyou', 'checkout_update_user_meta' );
 
function checkout_update_user_meta( $order_id ) {
   $order = new WC_Order( $order_id );
   $user_id = $order->get_user_id();
   $items = $order->get_items();

foreach ( $items as $item ) {

$product_id = $item['product_id'];

if ( $product_id === 777 ) {    
      update_user_meta( $user_id, 'masterclass-1', 'ok' );
  }
}
}

您的代码的问题在于您用单引号将$order_id括起来.这一行$order = new WC_Order( $order_id );也可以替换为$order = wc_get_order( $order_id );

enter image description here

Php相关问答推荐

在不刷新页面的情况下无法使用JQuery更新id

如何使用URL链接(mdl)切换选项卡

如何让PHP变量跨越多个脚本调用?

RediSearch PHP希望我在每次使用时定义所有字段

在WooCommerce中禁用客户用户角色的纳税计算

在Laravel Eloquent中实现一对多关系

PHP测试字符串的所有POST值

SendGrid响应PHP

如何将WooCommerce产品从一个产品复制到另一个产品S

如何在laravel中添加延迟?

向WooCommerce管理订单总额添加自定义总额行

允许在WooCommerce管理订单列表中使用计费邮箱进行搜索

使用 foreach php 将记录正确分配给正确的父级

URL中包含"&"与DirectoryIterator不兼容

如何设置Mailersend PHP API 模板变量?

用于检测此模式的正则表达式:something;something=something,something=something... 未知次数

仅允许减少 WooCommerce 中已完成订单的库存数量

为什么在解压缩具有混合字符串和 int 键的关联数组时出现错误消息无法使用位置参数...?

Laravel Websockets 错误:(WebSocket 在建立连接之前关闭)

检测字符串是否包含Letter with Tilde或Letter + Combining Tilde