WooCommerce: Adăugare meta personalizată diferită pentru fiecare produs din comandă
23 feb. 2019, 11:11:38
Vizualizări: 13.5K
Voturi: 3
Cu această funcție pot adăuga meta personalizată pentru toate produsele dintr-o comandă.
add_action( 'woocommerce_add_order_item_meta', 'add_order_item_meta', 10, 2 );
function add_order_item_meta($item_id, $values) {
$key = '_key';
$value = '_value';
wc_update_order_item_meta($item_id, $key, $value);
}
Dar cum pot adăuga meta diferită pentru fiecare produs din comandă? De exemplu, am nevoie să adaug prețul fiecărui produs ca order_itemmeta.

Hossein
31
Toate răspunsurile la întrebare
1
0
Încearcă,
woocommerce_checkout_create_order_line_item
Are 4 argumente disponibile și este disponibil începând cu versiunea WooCommerce 3.3+.
$item
este o instanță a noii clase introduseWC_Order_Item_Product
$cart_item_key
este cheia unică hash a articolului din coș$values
este articolul din coș$order
o instanță a obiectuluiWC_Order
(Acesta este un argument suplimentar foarte util în anumite cazuri specifice)
În acest hook vom înlocui vechile funcții care funcționau wc_add_order_item_meta()
cu noua metodă WC_Data update_meta_data()
care trebuie folosită cu argumentul $item
.
Exemplu:
add_action( 'woocommerce_checkout_create_order_line_item', 'custom_checkout_create_order_line_item', 20, 4 );
function custom_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
// Obține valoarea unui câmp personalizat al produsului
$custom_field_value = get_post_meta( $item->get_product_id(), '_meta_key', true );
// Actualizează metadatele articolului din comandă
if ( ! empty( $custom_field_value ) ){
$item->update_meta_data( 'meta_key1', $custom_field_value );
}
// … … Sau … …
// Obține datele personalizate din articolul coșului și actualizează metadatele articolului din comandă
if( isset( $values['custom_data'] ) ) {
$item->update_meta_data( 'meta_key2', $values['custom_data'] );
}
}

Jaydip Nimavat
224
23 feb. 2019 14:26:24
Întrebări similare
1
răspunsuri
2
răspunsuri
1
răspunsuri