https://tdestudiodesign.com/wp-content/plugins/whatsapp/style.css

Hay una forma nativa y útil de obtener el último pedido de un cliente de WooCommerce: wc_get_customer_last_order ($ customer_id)

Esta vez, quiero escribir algún código personalizado para obtener el segundo último pedido. De hecho, reutilizaremos la mayoría del código de función anterior y lo cambiaremos ligeramente. ¡Disfrutar!

Este es el código nativo para obtener el último pedido de un cliente dentro de WooCommerce Core. ¡Usemos esto para crear una función personalizada para obtener el segundo último pedido!

Php Snippet: Obtenga el segundo pedido de WooCommerce Cliente último

Tenga en cuenta la única diferencia menor del código «Última orden»:

LIMIT 1 , 1

Este obtiene el segundo último registro dentro de la base de datos (el segundo «1» es el desplazamiento).

Para devolver el segundo último pedido, use bbloomer_get_second_last_order_cot (123)donde «123» es la identificación del cliente. Este fragmento ya es compatible con HPO.

 /**  * @snippet       Get Customer Second Last Order  * @how-to        businessbloomer.com/woocommerce-customization  * @author        Rodolfo Melogli, Business Bloomer  * @compatible    WooCommerce 8  * @community     https://businessbloomer.com/club/  */  use AutomatticWooCommerceUtilitiesOrderUtil;  function bbloomer_get_second_last_order_cot( $customer_id ) { global $wpdb; $order_statuses_sql = "( '" . implode( "','", array_map( 'esc_sql', array_keys( wc_get_order_statuses() ) ) ) . "' )"; if ( OrderUtil::custom_orders_table_usage_is_enabled() ) { $sql = $wpdb->prepare( 'SELECT id FROM ' . OrdersTableDataStore::get_orders_table_name() . " WHERE customer_id = %d AND status in $order_statuses_sql ORDER BY id DESC LIMIT 1 , 1", $customer_id ); $second_last_order_id = $wpdb->get_var( $sql ); } else { $second_last_order_id = $wpdb->get_var( "SELECT posts.ID FROM $wpdb->posts AS posts LEFT JOIN {$wpdb->postmeta} AS meta on posts.ID = meta.post_id WHERE meta.meta_key = '_customer_user' AND meta.meta_value = '" . esc_sql( $customer_id ) . "' AND posts.post_type = 'shop_order' AND posts.post_status IN $order_statuses_sql ORDER BY posts.ID DESC LIMIT 1 , 1" ); } if ( ! $second_last_order_id ) { return false; } return wc_get_order( absint( $second_last_order_id ) ); } 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *