وردپرس

woocommerce_checkout_update_order_meta


پاسخ ها: 0

برای کد زیر

// #############################
add_action('woocommerce_checkout_update_order_meta', 'add_cart_params_to_order_meta', 10, 2);

function add_cart_params_to_order_meta($order_id) {
$order = wc_get_order($order_id);
foreach (WC()->cart->get_cart() as $cart_item) {
if (isset($cart_item['ref'])) {
$order->update_meta_data('wc_ref', $cart_item['ref'], true);
error_log('Ref salvat: ' . $cart_item['ref']);
} else {
error_log('Nu exista ref in acest cart_item');
}

if (isset($cart_item['email'])) {
$order->update_meta_data('wc_email', $cart_item['email'], true);
error_log('Email salvat: ' . $cart_item['email']);
} else {
error_log('Nu exista ref in acest cart_item');
}
}

error_log('Meta-datele comenzii înainte de salvare: ' . print_r($order->get_meta_data(), true));

$order->save();
wp_cache_flush();

error_log('Order meta data saved successfully for order ID: ' . $order->get_id());
}

من می توانم در گزارش ها ببینم

Meta-datele comenzii înainte de salvare: 
...
[data:protected] => Array
(
[id] => 814
[key] => is_vat_exempt
[value] => no
)

)

[3] => WC_Meta_Data Object
(
[current_data:protected] => Array
(
[key] => wc_ref
[value] => http://wp1.local
)

[data:protected] => Array
(
[key] => wc_ref
[value] => http://wp1.local
)

)

با این حال وقتی اجرا می کنم

SELECT * FROM wp_postmeta WHERE meta_key IN ('wc_ref', 'wc_email');
Empty set (0.00 sec)

آیا می دانید و می توانید به من بگویید چرا METAهای سفارش wc_ref و wc_email ذخیره نمی شوند؟

به هر حال اگر از گزینه به روز رسانی مانند زیر استفاده کنم

//add_action('woocommerce_checkout_update_order_meta', 'add_dynamic_cart_params_to_options', 10, 2);
//function add_dynamic_cart_params_to_options($order_id, $data) {
// foreach (WC()->cart->get_cart() as $cart_item) {
// if (isset($cart_item['ref'])) {
// // Creează un nume de opțiune dinamic pentru "ref"
// $ref_option_name="wc_ref_" . $order_id;
// update_option($ref_option_name, $cart_item['ref']);
// error_log('Ref salvat în opțiune: ' . $ref_option_name . ' -> ' . $cart_item['ref']);
// } else {
// error_log('Nu există ref în acest cart_item');
// }

کار می کند

این خبر را در ایران وب سازان مرجع وب و فناوری دنبال کنید

مشاهده پاسخ های این مطلب
———————————————
این مطلب از سایت انجمن وردپرس گردآوری شده است و کلیه حقوق مطلق به انجمن وردپرس می باشد در صورت مغایرت و یا بروز مشکل اطلاع دهید تا حذف گردد

منبع: انجمن وردپرس

دکمه بازگشت به بالا