Mostrar metadatos personalizados en el orden de administración de WooCommerce después de la dirección de facturación

2 minutos de lectura

Después de haber leído la respuesta de 7uc1f3r en Agregar un campo de selección con intervalos de tiempo basados ​​en tiempos de apertura, cierre y descansos en el pago de WooCommerce, hice todo lo posible para comprender cómo agregar el tiempo real al pedido.

Esto ya se mencionó en la pregunta inicial, pero al modificar ese código para que coincida con el código de respuesta de 7uc1f3r, recibo un aviso en la página de pedido (administrador).

Dice:

Notice: id was called incorrectly. Order properties should not be accessed directly. Backtrace: require('wp-admin/edit-form-advanced.php'), do_meta_boxes, WC_Meta_Box_Order_Data::output, do_action('woocommerce_admin_order_data_after_billing_address'), WP_Hook->do_action, WP_Hook->apply_filters, wps_select_checkout_field_display_admin_order_meta, WC_Abstract_Legacy_Order->__get, wc_doing_it_wrong Please see Debugging in WordPress for more information. (This message was added in version 3.0.) in /wp-includes/functions.php on line 5311

Se muestra el tiempo de entrega real, pero con este aviso arriba.

Dicho esto; Hice lo mejor que pude para modificar el código aún más para verificar “si” el tiempo de entrega no está en blanco y, de ser así, mostrarlo. Eso tampoco ayudó: el aviso sigue ahí.

Esto es lo que cambié el código en:

add_action('woocommerce_admin_order_data_after_billing_address', 'wps_select_checkout_field_display_admin_order_meta', 10, 1 );
function wps_select_checkout_field_display_admin_order_meta( $order ) {
    
    if ( get_post_meta( $order->get_id(), 'delivery_time' != '' ) ) {
    
        echo '<p><strong>'.__('Requested Delivery Time').':</strong> ' . get_post_meta($order->id, 'delivery_time', true) . '</p>';
    }
}

No estoy seguro de cómo deshacerse del aviso.

avatar de usuario
LoicTheAztec

El problema viene de $order->idasí que intente lo siguiente en su lugar:

add_action('woocommerce_admin_order_data_after_billing_address', 'wps_select_checkout_field_display_admin_order_meta', 10, 1 );
function wps_select_checkout_field_display_admin_order_meta( $order ) {
    $delivery_time = $order->get_meta('delivery_time');
    
    if ( ! empty($delivery_time) ) {
        echo '<p><strong>'.__('Requested Delivery Time').':</strong> ' . $delivery_time . '</p>';
    }
}

Ahora debería funcionar.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad