woo tutorial tienda shortcodes plugin guia español wordpress woocommerce

wordpress - tienda - tutorial woocommerce español pdf



¿Cómo obtener la suma total de pedidos de un usuario en woocommerce? (2)

Puede usar la siguiente función para obtener la suma total de las órdenes completadas de un usuario

public function get_customer_total_order() { $customer_orders = get_posts( array( ''numberposts'' => - 1, ''meta_key'' => ''_customer_user'', ''meta_value'' => get_current_user_id(), ''post_type'' => array( ''shop_order'' ), ''post_status'' => array( ''wc-completed'' ) ) ); $total = 0; foreach ( $customer_orders as $customer_order ) { $order = wc_get_order( $customer_order ); $total += $order->get_total(); } return $total; }

Pero esta función debe invocarse cuando wp se cargue por completo, por lo que si usa esta función en su acción woocommerce_payment_complete , funcionará

Espero eso ayude

Estoy usando el complemento woocommerce en un tema. Quiero una funcionalidad en la que necesite verificar la suma total de pedidos realizados por un cliente. Sobre la base de eso, les ofreceré descuentos en cupones. La parte de cupones es clara. Pero no puedo obtener la suma total de todas las órdenes hechas por un usuario.

cuál es mi plan: si la compra de un usuario excede los $ 300, le proporcionaremos un cupón. para esto estoy usando esta acción. Pero tiene dificultades con la base de datos de formularios de consulta para la suma de pedidos por usuario.

function so_27969258_track_orders_per_customer($order_id){ $order = new WC_Order( $order_id ); $myuser_id = (int)$order->user_id; $user_info = get_userdata($myuser_id); $items = $order->get_items(); foreach ($items as $item) { } return $order_id; } add_action( ''woocommerce_payment_complete'', ''so_27969258_track_orders_per_customer'' );

También estoy tratando de obtener el pedido con una identificación de usuario que obtuve de my-orders.php en la carpeta woocommerce / myaccount. Estoy intentando ejecutar este código en function.php pero devolviendo la matriz vacía.

$customer_orders = get_posts( apply_filters( ''woocommerce_my_account_my_orders_query'', array( ''numberposts'' => $order_count, ''meta_key'' => ''_customer_user'', ''meta_value'' => get_current_user_id(), ''post_type'' => wc_get_order_types( ''view-orders'' ), ''post_status'' => array_keys( wc_get_order_statuses() ) ) ) ); var_dump($customer_orders); if ( $customer_orders ) : foreach ( $customer_orders as $customer_order ) { $order = wc_get_order( $customer_order ); $order->populate( $customer_order ); $item_count = $order->get_item_count(); echo $order->get_order_number(); echo wc_get_order_status_name( $order->get_status() ); echo sprintf( _n( ''%s for %s item'', ''%s for %s items'', $item_count, ''woocommerce'' ), $order->get_formatted_order_total(), $item_count ); } endif;

¿Alguien puede ayudarme cómo funcionará este código en function.php? Sé que me faltan muchas cosas. Por favor recomiende.


En el plugin reciente hicimos esta función para enumerar a los 5 principales clientes con su recuento de pedidos y el monto total que gastaron puede ser que funcione para usted.

global $wpdb; $top_customer_query = ""; $top_customer_query .= "SELECT SUM(wc_postmeta1.meta_value) AS ''Total'' ,wc_postmeta2.meta_value AS ''BillingEmail'' ,CONCAT(wc_postmeta3.meta_value, '' '',wc_postmeta5.meta_value) AS BillingName ,Count(wc_postmeta2.meta_value) AS ''OrderCount'' FROM "; $top_customer_query .= "{$wpdb->prefix}posts as wc_posts LEFT JOIN {$wpdb->prefix}postmeta as wc_postmeta1 ON wc_postmeta1.post_id=wc_posts.ID LEFT JOIN {$wpdb->prefix}postmeta as wc_postmeta2 ON wc_postmeta2.post_id=wc_posts.ID LEFT JOIN {$wpdb->prefix}postmeta as wc_postmeta3 ON wc_postmeta3.post_id=wc_posts.ID LEFT JOIN {$wpdb->prefix}postmeta as wc_postmeta5 ON wc_postmeta5.post_id=wc_posts.ID"; $top_customer_query .= " WHERE wc_posts.post_type=''shop_order'' AND wc_postmeta1.meta_key=''_order_total'' AND wc_postmeta2.meta_key=''_billing_email'' AND wc_postmeta3.meta_key=''_billing_first_name'' AND wc_postmeta5.meta_key=''_billing_last_name''"; $top_customer_query .= " AND wc_posts.post_status IN (''wc-completed'')"; $top_customer_query .= " GROUP BY wc_postmeta2.meta_value"; $top_customer_query .= " Order By Total DESC"; $top_customer_query .= " LIMIT 0,5"; $top_5_customers = $wpdb->get_results($top_customer_query, OBJECT); foreach ($top_5_customers as $customer) { ?> <tr> <td> <?php echo $customer->BillingName; ?>