php - Woocommerce 和 Wordpress - 如何在 woocommerce_checkout_create_order_line_item 上访问订单 ID
问题描述
当使用woocommerce_checkout_create_order_line_item
.
但是,我似乎无法访问订单的 ID。
我已经使用过print_r($order)
并且可以在其中看到订单详细信息,但在对象中看不到订单的 ID。这是因为它还没有生成吗?
add_action('woocommerce_checkout_create_order_line_item', array($this, 'ticket_meta_to_line_item'), 20, 4 );
function ticket_meta_to_line_item( $item, $cart_item_key, $values, $order )
{
$_p = $item->get_product();
$key = 'Draw #';
$order_id = $order->id;
error_log( print_r( $order, true ) );
if ( false !== ( $value = $_p->get_meta( $key, true ) ) )
{
$numbers = $this->add_tickets_to_order_meta($order_id, $order->get_user_id(), $_p->id);
error_log( print_r( $numbers, true ) );
$item->add_meta_data( $key , 1 , true );
}
}
解决方案
如果您想添加元数据,则无需查找 Order_ID,从下面的代码中您可以轻松做到。
function _woocommerce_add_order_item_meta_new_ver($item,$cart_key,$values) {
//HERE product_meta is just a random key I have used here, you have to use your key here
if (isset ( $values ['product_meta'] )) {
foreach ( $values ['product_meta'] as $key => $val ) {
$order_val = stripslashes( $val );
if($val) {
if($key == 'your_cart_item_key') {
$item->add_meta_data('Your Key',$order_val);
}
}
}
}
}
//This will add "Your Key" in your order_item_meta, just make sure you have used the same key "your_cart_item_key" in your cart_item_meta key too.
推荐阅读
- r - 根据列值对行进行分组并在 R 中保留具有最小值的行
- laravel - Laravel 如果相关集合删除父级
- elixir - 对订阅应用过滤器
- c# - 如何在不知道 ID 号的情况下从数据库中检索数据?
- amazon-web-services - 尝试从 AWS beanstalk 配置文件中获取详细信息
- python - 我在 python 中的 telnet 程序与 ip/port 连接太慢
- processing-efficiency - 以 1 或 2 递增:循环速度
- javascript - Firestore:如何更新作为文档参考的文档字段?
- reactjs - 配置 next.config 文件
- python-2.7 - Scapy 在 Windows 中发送数据包加速