我只有一个自定义元数据到WooCommerce订单,现在我想在结帐后在“谢谢”页面上显示此数据,但是该数据不可用。数据已保存并在管理员中可用,我似乎无法访问它。
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_get_order
我的元数据不存在。
我正在使用;
woocommerce_add_order_item_meta()
保存数据但转储var_dump(wc_get_order( $order->id ));
也不会显示我的自定义元字段
我应该使用另一个挂钩来访问此数据吗?
您要查找的数据不是订单元数据,而是订单项元数据,并且位于wp_woocommerce_order_itemmeta
数据库表中(请参阅下面的如何访问此数据)。
从woocommerce 3开始,一个更好的钩子替换了旧的woocommerce_add_order_item_meta
钩子。
显示和可读的订单商品元数据:
要使自定义订单商品的元数据显示在各处,该元关键字应该是可读的标签名称,并且不能以下划线开头,因为该数据将显示在每个订单商品下。
编码:
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( $order->get_items() as $item_id => $item ){
$custom_data = $item->get_meta( 'Custom option' );
}
要获取第一订单项(避免foreach循环),您将使用:
$items = $order->get_items(); // Order items
$item = reset($items); // The first Order item
$custom_data = $item->get_meta( 'Custom option' ); // Your custom meta data
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句