es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mostrar metadatos de productos en la tabla de elementos de pedido en la página de detalles de pedido del administrador de WooCommerce.

Estoy utilizando el siguiente código para mostrar metadatos personalizados del producto en la tabla de elementos de pedido en la página de detalles del pedido del administrador de WooCommerce:

add_action('woocommerce_admin_order_item_headers', 'tempiconsegna_admin_order_item_headers');
function tempiconsegna_admin_order_item_headers() { 
    $column_name = 'Tempi Consegna'; 
    echo '<th>' . $column_name . '</th>'; 
} 

add_action('woocommerce_admin_order_item_values', 'tempiconsegna_admin_order_item_values', 10, 3);
function tempiconsegna_admin_order_item_values($_product, $item, $item_id = null) {
    $value = get_post_meta($_product->post->ID, 'prefix-tempiconsegna', 1); 
    echo '<td>' . $value . '</td>';
}

Muestra “prefix-tempiconsegna” que son metadatos personalizados como:

  • Disponible en 3 días
  • Disponible ahora
  • etc…

Mi problema es que si cambio la disponibilidad en el producto, también cambia en pedidos anteriores.

¿Cómo hago para que muestre el valor en el momento del pedido sin cambiarlo cuando actualizo la disponibilidad del producto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar el valor en el momento del pedido sin cambiar cuando se actualiza la disponibilidad del producto, es necesario modificar el código para obtener los datos del producto desde el elemento del pedido en lugar de hacerlo directamente desde la meta publicada del producto.

    Utilice el siguiente código en lugar del proporcionado:

    add_action('woocommerce_admin_order_item_headers', 'tempiconsegna_admin_order_item_headers');
    function tempiconsegna_admin_order_item_headers() { 
        $column_name = 'Tempi Consegna'; 
        echo '<th>' . $column_name . '</th>'; 
    } 
    
    add_action('woocommerce_admin_order_item_values', 'tempiconsegna_admin_order_item_values', 10, 3);
    function tempiconsegna_admin_order_item_values($product, $item, $item_id = null) {
        $value = $item->get_meta('prefix-tempiconsegna', true); 
        echo '<td>' . $value . '</td>';
    }
    

    Este código obtiene los datos del producto desde el elemento del pedido usando el método get_meta(), que recupera el valor en el momento en que se realiza el pedido y no cambia si la disponibilidad del producto se actualiza posteriormente.

    Con esta modificación, el valor mostrado siempre reflejará la disponibilidad del producto en el momento del pedido, independientemente de cualquier cambio posterior realizado en la disponibilidad del producto.

Comments are closed.