Я пытаюсь добавить простое поле ввода в серверную часть заказа и использовать его для обновления информации о позиции моего заказа. Это простая мета под названием «Количество людей».
Кажется, все работает нормально, за исключением того, что сохранение порядка НЕ обновляет мета-поле так, как оно создано сейчас. Что я могу делать не так?
/* Add custom field to cart item data */
add_filter('woocommerce_add_cart_item_data', function ($cart_item_data, $product_id, $variation_id) {
if (isset($_POST['number_of_people'])) {
$cart_item_data['number_of_people'] = (int) sanitize_text_field($_POST['number_of_people']);
}
return $cart_item_data;
}, 10, 3);
/* Add custom field to order line item */
add_action('woocommerce_checkout_create_order_line_item', function ($item, $cart_item_key, $values, $order) {
if (isset($values['number_of_people'])) {
$item->add_meta_data(__('Number of People', 'woocommerce'), $values['number_of_people']);
}
}, 10, 4);
add_action('woocommerce_admin_order_data_after_billing_address', 'print_custom_fields_in_the_admin_order', 10, 1);
function print_custom_fields_in_the_admin_order($order)
{
$order = wc_get_order($order->get_id());
foreach ($order->get_items() as $item_id => $item) {
if (has_term('group-class', 'product_cat', $item->get_product_id())) {
$number_of_people = $item->get_meta('Number of People', true);
error_log('Number of People: ' . $number_of_people);
break;
}
}
?>
[h4]Additional Information[/h4]
Click on the fields below to edit the values
Number of People:
Подробнее здесь: [url]https://stackoverflow.com/questions/79790221/update-woocommerce-order-item-custom-meta-field[/url]
Я пытаюсь добавить простое поле ввода в серверную часть заказа и использовать его для обновления информации о позиции моего заказа. Это простая мета под названием «Количество людей». Кажется, все работает нормально, за исключением того, что сохранение порядка НЕ обновляет мета-поле так, как оно создано сейчас. Что я могу делать не так? [code]/* Add custom field to cart item data */ add_filter('woocommerce_add_cart_item_data', function ($cart_item_data, $product_id, $variation_id) { if (isset($_POST['number_of_people'])) { $cart_item_data['number_of_people'] = (int) sanitize_text_field($_POST['number_of_people']); } return $cart_item_data; }, 10, 3);
/* Add custom field to order line item */ add_action('woocommerce_checkout_create_order_line_item', function ($item, $cart_item_key, $values, $order) { if (isset($values['number_of_people'])) { $item->add_meta_data(__('Number of People', 'woocommerce'), $values['number_of_people']); } }, 10, 4);
add_action('woocommerce_admin_order_data_after_billing_address', 'print_custom_fields_in_the_admin_order', 10, 1); function print_custom_fields_in_the_admin_order($order) { $order = wc_get_order($order->get_id()); foreach ($order->get_items() as $item_id => $item) { if (has_term('group-class', 'product_cat', $item->get_product_id())) { $number_of_people = $item->get_meta('Number of People', true); error_log('Number of People: ' . $number_of_people); break; } }
?>
[h4]Additional Information[/h4] Click on the fields below to edit the values