Edición de las páginas de vista de pedidos de Mi cuenta en WooCommerce

3 minutos de lectura

avatar de usuario
mohamed adel

En las páginas de “Vista de pedidos” de Mi cuenta de WooCommerce, se supone que debo agregar un seguimiento visual como este:
ingrese la descripción de la imagen aquí

En las páginas reales, para rastrear cada pedido, arriba de los detalles del pedido:

ingrese la descripción de la imagen aquí

  1. El primer problema es que no sé cómo agregar el código html y php a la página de orden de visualización. Intenté agregar ganchos en functions.php pero no funcionó.

  2. El segundo problema es que quiero obtener el estado de cada pedido en la página Ver pedido (por ejemplo, procesamiento o entrega, etc.)

Aquí está mi código functions.php para intentar lograrlo:

    // **
//  * Add custom tracking code to the view order page
//  */
add_action( 'woocommerce_view_order', 'my_custom_tracking' );
function my_custom_tracking(){
    $order = wc_get_order( $order_id );

    $order_id  = $order->get_id(); // Get the order ID
    $parent_id = $order->get_parent_id(); // Get the parent order ID (for subscriptions…)

    $user_id   = $order->get_user_id(); // Get the costumer ID
    $user      = $order->get_user(); // Get the WP_User object

    echo $order_status  = $order->get_status(); // Get the order status 
}

avatar de usuario
LoicTheAztec

Hay algunos errores en tu código:

  1. los $order_id la variable ya está incluida como argumento de función para este gancho, pero falta en tu código.
  2. no puedo usar echo con $order_status = $order->get_status();

Así que prueba en su lugar:

add_action( 'woocommerce_view_order', 'my_custom_tracking' );
function my_custom_tracking( $order_id ){
    // Get an instance of the `WC_Order` Object
    $order = wc_get_order( $order_id );
    
    // Get the order number
    $order_number  = $order->get_order_number();
    
    // Get the formatted order date created
    $date_created  = wc_format_datetime( $order->get_date_created() );
    
    // Get the order status name
    $status_name  = wc_get_order_status_name( $order->get_status() );
    
    // Display the order status 
    echo '<p>' . __("Order Status:") . ' ' . $status_name . '</p>';
}

El código va en el archivo function.php de su tema secundario activo (o tema activo). Probado y funciona.


Si quieres cambiar los textos subrayados amarillos en su segunda captura de pantalla, tendrá que hacer cambios en myaccount/view-order.php archivo de plantilla:

  1. primera lectura documentación oficial comprender “cómo anular plantillas a través de un tema”.

  2. Una vez hecho esto y una vez copiadas las plantillas de WooCommerce a su tema activo como se explica en la documentación, abra editar myaccount/view-order.php archivo de plantilla.

  3. Los cambios a realizar se ubican en las líneas de la 26 a la 34:

     <p><?php
         /* translators: 1: order number 2: order date 3: order status */
         printf(
             __( 'Order #%1$s was placed on %2$s and is currently %3$s.', 'woocommerce' ),
             '<mark class="order-number">' . $order->get_order_number() . '</mark>',
             '<mark class="order-date">' . wc_format_datetime( $order->get_date_created() ) . '</mark>',
             '<mark class="order-status">' . wc_get_order_status_name( $order->get_status() ) . '</mark>'
         );
     ?></p>
    

¿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