——更新——
据我所知,这个自定义字段已经存在,并且您在购物车中获得了这个 restaurant_id 值。因此,您希望在查看顺序中显示它(感谢您和我的帐户页面),并且可能在电子邮件中......
代码如下:
//
// ADD HIDDEN IMPUT FIELDS TO THE CHECKOUT
//
add_action( 'woocommerce_after_order_notes', 'checkout_custom_hidden_imput_field' );
function checkout_custom_hidden_imput_field( $checkout ) {
foreach(WC()->cart->get_cart() as $item){
$restaurant_id = $item['restaurant_id'];
break;
}
echo '<div id="custom_checkout_fields" class="custom-hidden-checkout-field">
<input type="hidden" id="restaurant_id" name="restaurant_id" value="'.$restaurant_id.'" />
</div>';
}
//
// SAVE THE ORDER META WITH FIELD VALUE
//
add_action( 'woocommerce_checkout_update_order_meta', 'custom_checkout_field_update_order_meta' );
function custom_checkout_field_update_order_meta( $order_id ) {
if ( ! empty( $_POST['restaurant_id'] ) ) {
add_post_meta( $order_id, '_restaurant_id', $_POST['restaurant_id'] );
}
}
//
// DISPLAY FIELD VALUE ON THE ORDER EDIT PAGE (NOT IN CUSTOM FIELDS METABOX)
//
add_action( 'woocommerce_admin_order_data_after_billing_address', 'custom_checkout_field_display_admin_order_meta', 10, 1 );
function custom_checkout_field_display_admin_order_meta($order){
$restaurant_id = get_post_meta( $order->id, '_restaurant_id', true );
if ( ! empty( $restaurant_id ) ) {
echo '<p><strong>'. __("Restaurant ID", "woocommerce").':</strong> ' . $restaurant_id . '</p>';
}
}
//
// ADD THE INFORMATION AS META DATA SO THAT IT CAN BE SEEN AS PART OF THE ORDER
//
add_action('woocommerce_add_order_item_meta','custom_add_values_to_order_item_meta', 1, 3 );
function custom_add_values_to_order_item_meta( $item_id, $values, $cart_item_key ) {
$restaurant_id = get_post_meta( $order->id, '_restaurant_id', true );
// lets add the meta data to the order!
wc_add_order_item_meta($item_id, '_restaurant_id', $restaurant_id, true);
}
代码进入您的活动子主题(或主题)的任何 php 文件或任何插件 php 文件中。
代码已经过测试并且可以工作。