Select para sacar todos los pedidos de Woocommerce entre dos fechas

Select para sacar todos los pedidos de Woocommerce entre dos fechas

Empezamos creando un directorio dentro de WordPress y añadiendo un archivo php con el siguiente código

<?php
header('Content-Type: text/html; charset=utf-8');
define('WP_USE_THEMES', false); /*incluir las dependencias de WordPress*/
require('../wp-load.php');
global $wpdb;
$i=0;  /* Iniciamos $i para pintar solo una vez la cabecera con los títulos de los campos */
$fecha1="2018-05-05  10:00:00"; /* Fecha 1 con hora de muestra */
$fecha2="2018-05-07  10:00:00"; /* Fecha 2 con hora de muestra */

Hacemos la Query o Select

$querystr = "SELECT p.ID,p.post_date, pm1.meta_value as nombre, pm2.meta_value as apellidos, 
pm3.meta_value as email, pm4.meta_value as direccion, pm5.meta_value as ciudad, pm6.meta_value as cp 
FROM wp_posts p 
LEFT JOIN wp_postmeta pm1 ON (pm1.post_id = p.ID AND pm1.meta_key = '_billing_first_name') 
LEFT JOIN wp_postmeta pm2 ON (pm2.post_id = p.ID AND pm2.meta_key = '_billing_last_name') 
LEFT JOIN wp_postmeta pm3 ON (pm3.post_id = p.ID AND pm3.meta_key = '_billing_email') 
LEFT JOIN wp_postmeta pm4 ON (pm4.post_id = p.ID AND pm4.meta_key = '_billing_address_1') 
LEFT JOIN wp_postmeta pm5 ON (pm5.post_id = p.ID AND pm5.meta_key = '_billing_city')
LEFT JOIN wp_postmeta pm6 ON (pm6.post_id = p.ID AND pm6.meta_key = '_billing_postcode')
WHERE post_status = 'wc-completed' AND post_type='shop_order' AND post_date >= '$fecha1' AND post_date <= '$fecha2' 
ORDER BY post_date,nombre ASC";   

Conectamos con la base de datos

$pagePosts = $wpdb->get_results($querystr, OBJECT);
$contadorPedidos  = count($pagePosts);

Recorremos todos los pedidos

foreach ($pagePosts as $post) {
$order = wc_get_order($post->ID); /* Obtener todos los productos de este pedido asignado al ID del post tipo shop_order */ 
foreach ($order->get_items() as $item_id => $item_product) {      
$item_product_data_array      = $item_product->get_data();  /* Devuelve todos los datos para este pedido.*/
$contadorProductos            = count($item_product_data_array);
$direccion                    = $post->direccion . "-" . $post->cp . "-" . $post->ciudad;
$nombreApellidos              = $post->nombre . " " . $post->apellidos;
$email                        = $post->email;
$dateSrc                      = $post->post_date;
$dateTime                     = date_create($dateSrc);
$fecha                        = $dateTime->format("d/m/Y");
$item_product_meta_data_array = $item_product->get_meta_data();		/* Devuelve los productos de este pedido*/	
$cantidad= $item_product->get_quantity();				
$numPedido = $item_product_data_array['order_id']; 
$precio = wc_get_product( $item_product_data_array['product_id']);
$precio = number_format($precio->get_price(),2, ',', ' ');
if($i==0){    /* Pintamos la cabecera solo una vez  */
echo "<table><tr><td> Nombre </td><td> Cantidad </td><td> Producto </td><td> Nº Pedido </td><td> Precio </td><td> Fecha </td></tr>";
$i++;	
}
foreach ($item_product_meta_data_array as $item) { 
if($item->value){  /* Solo pintamos si hay un producto */
echo "<tr><td>" . $nombreApellidos . "</td><td>" . $cantidad . "</td><td>" . $item->value . "</td><td>" . $numPedido . "</td><td>" . $precio . "</td><td>" . $fecha . "</td></tr>";
}
} 
}
}

Dejar un comentario

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