Php元数据检索,php-在项目上保留元数据,并在结帐完成时检索

我试图在将商品添加到购物车时设置其元数据,并在每次页面重新加载时将其保留,并在结帐成功后检索元数据以传递给单独的API.

下面的代码是成功的,因为它在页面重新加载后会回显元数据,因此我认为这是成功的.

add_action('woocommerce_order_status_completed', 'order_system');

add_filter('woocommerce_add_cart_item_data', 'nick_add_cart_item_data', 10, 2);

add_filter('woocommerce_get_cart_item_from_session', 'nick_get_cart_item_from_session', 10, 2);

function nick_add_cart_item_data($cart_item_meta, $product_id) {

global $woocommerce;

$nick_form_data = get_post_meta($product_id, '_nick_form_data', true);

$cart_item_meta['_nick_form_data'] = $nick_form_data;

$cart_item_meta['_nick_credential_data']['username'] = ( isset( $_POST['username'] ) && $_POST['username'] != '') ? $_POST['username'] : '';

$cart_item_meta['_nick_credential_data']['password'] = ( isset( $_POST['password'] ) && $_POST['password'] != '') ? $_POST['password'] : '';

return $cart_item_meta;

}

function nick_get_cart_item_from_session($cart_item, $values) {

if (isset($values['_nick_form_data'])) {

$cart_item['_nick_form_data'] = $values['_nick_form_data'];

}

if (isset($values['_nick_credential_data'])) {

$cart_item['_nick_credential_data'] = $values['_nick_credential_data'];

echo $values['_nick_credential_data']['username'] . $values['_nick_credential_data']['password'] ;

}

return $cart_item;

}

当我调用此函数时(在完成订单时将触发),我无法保留任何项目元数据.

function order_system($order_id)

{

global $woocommerce;

try {

// do something that can go wrong

// instantiate new order from WooCommerce

$order = new WC_Order($order_id);

$userid = $order->user_id;

foreach ($order->get_items() as $item_id => $values) :

if (isset($values['_nick_form_data'])) :

// Not getting inside this case statement

endif;

endforeach;

....

我不确定自己做错了什么,我们将不胜感激.谢谢!!

解决方法:

有点晚了,但是:尽管您将元数据附加到购物车项目,但是在创建订单时,它们不会随后添加到订单项中.要做到这一点:

function nick_add_order_item_meta($itemID, $values) {

$nick_form_data = $values['_nick_form_data'];

if (!empty($nick_form_data)) {

wc_add_order_item_meta($itemID, '_nick_form_data', $nick_form_data);

}

}

add_action('woocommerce_add_order_item_meta','nick_add_order_item_meta', 1, 2);

在创建订单时,购物车商品meta _nick_form_data将附加到每个商品.然后,当您查看订单时,便可以在WooCommerce的后端中看到它:每个订单项旁边都应有一个[?],这将向您显示附加的元数据.

标签:woocommerce,wordpress,php

来源: https://codeday.me/bug/20191030/1970585.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值