En el carrito, creo dinámicamente algunos metadatos para cada elemento a partir de una función ubicada en functions.php.

EN PAGO, me gustaría guardar cada metadato para cada artículo del pedido actual.

De esta manera, una vez completado el pedido, necesitaría mostrar estos datos en el correo electrónico de administración de woo commerce y woocommerce.

Básicamente, necesito guardar $ date_start, $ duration, $ end_date cuando se complete el pedido y recibir estos datos en el administrador y los correos electrónicos de woocomerce.

    function get_infos_order ($date_start,$duration){


$end_date          = strtotime('+ '.$duration, $date_start); 



}

¿Podría alguien dar algunos consejos sobre cómo hacerlo, por favor?

Muchas gracias.

3
user6677795 14 dic. 2016 a las 17:08

2 respuestas

La mejor respuesta

Guárdelos usando esta función:

function add_order_item_meta($item_id, $values) {
    $key = ''; // Define your key here
    $value = $_POST['key_name']; // Get your value here
    woocommerce_add_order_item_meta($item_id, $key, $value);
}
add_action('woocommerce_add_order_item_meta', 'add_order_item_meta', 10, 2);
0
Muhammad Muazzam 17 dic. 2016 a las 09:39

La solución de Muhammad Muazzam está bien, pero woocommerce_add_order_item_meta está en desuso, debe usar wc_add_order_item_meta

function add_order_item_meta($item_id, $values) {
    $key = ''; // Define your key here
    $value = filter_input(INPUT_POST, 'key_name'); // Safer retrieval
    wc_add_order_item_meta( $item_id, $meta_key, $meta_value);
}
add_action('woocommerce_add_order_item_meta', 'add_order_item_meta', 10, 2);

Fuente: https://docs.woocommerce.com/ wc-apidocs / source-function-woocommerce_add_order_item_meta.html # 428-433

2
Skatox 17 dic. 2016 a las 18:01