Php 添加到订单项元数据中的自定义元数据未显示在订单项元数据中
我有一个自定义元数据到WooCommerce订单,现在我想在结帐后在感谢页面上显示它,但是,数据不可用。数据已保存并在管理员中可用,我似乎无法访问它Php 添加到订单项元数据中的自定义元数据未显示在订单项元数据中,php,wordpress,woocommerce,hook-woocommerce,orders,Php,Wordpress,Woocommerce,Hook Woocommerce,Orders,我有一个自定义元数据到WooCommerce订单,现在我想在结帐后在感谢页面上显示它,但是,数据不可用。数据已保存并在管理员中可用,我似乎无法访问它 function custom_order_item_meta( $item_id, $values ) { if ( ! empty( $values['custom_option'] ) ) { woocommerce_add_order_item_meta( $item_id, 'custom_option', $v
function custom_order_item_meta( $item_id, $values ) {
if ( ! empty( $values['custom_option'] ) ) {
woocommerce_add_order_item_meta( $item_id, 'custom_option', $values['custom_option'] );
}
}
add_action( 'woocommerce_add_order_item_meta', 'custom_order_item_meta', 10, 2 );
但是当我把wc\u get\u order
倒出来时,我的元数据不在那里
我正在使用
woocommerce\u add\u order\u item\u meta()
保存数据但转储var_dump(wc_get_order($order->id))代码>也不显示我的自定义元字段
是否应该使用另一个钩子来访问此数据?您要查找的数据不是order元数据,而是orderitem元数据,位于wp\u woocommerce\u order\u itemmeta
数据库表中(请参见下文如何访问此数据)
从woocommerce 3开始,替换旧的woocommerce\u add\u order\u item\u meta
hook
显示和可读的订单项目元数据:
要使自定义订单项目元数据到处显示,元数据键应为可读的标签名称,且不以下划线开头,因为此数据将显示在每个订单项目下
守则:
add_action( 'woocommerce_checkout_create_order_line_item', 'custom_order_item_meta', 20, 4 );
function custom_order_item_meta( $item, $cart_item_key, $values, $order ) {
if ( isset( $values['custom_option'] ) ) {
$item->update_meta_data( __('Custom option', 'woocommerce'), $values['custom_option'] );
}
}
在“订单已收到”(谢谢)页面中,您将看到如下内容:
这也将显示在后端和电子邮件通知中
要访问此订单项目数据您需要从foreach循环中的订单对象获取项目:
要获取第一个订单项(避免foreach循环),您将使用:
相关:非常感谢-是否有一种不用foreach
语句即可访问第一项的速记方法。例如,如果始终使用“第一个项目”自定义字段,则无论是否使用同一字段集购买了多个其他项目。例如,$order->get_items()[1]->get_meta('Custom option')
@SamXronn在我的答案中添加了一个附加项,以获取第一个订单项。
foreach( $order->get_items() as $item_id => $item ){
$custom_data = $item->get_meta( 'Custom option' );
}
$items = $order->get_items(); // Order items
$item = reset($items); // The first Order item
$custom_data = $item->get_meta( 'Custom option' ); // Your custom meta data