• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Plugins / Cambiar el estado de pedidos de WooCommerce a través de código

Cambiar el estado de pedidos de WooCommerce a través de código

[ 5 junio 2024 ] [ Autor: Jhon Marreros Guzmán ][ Plugins - Avanzado] [ ]

funcionalidad woocommerce

Suscríbete a DecodeCMS:  

Recientemente en un proyecto en el que participé hubo un problema con el sitio web y algunos pedidos no se terminaron de completar, quedando en estado de espera o cancelados, sin embargo en la pasarela figuraban como completados.

 

Generalidades

Lo que se requiere es que los pedidos que se han pagado en la pasarela figuren como completados en WooCommerce.

Desde la pasarela podemos exportar un archivo .csv con los IDs de los pedidos pagados.

Una solución seria corregir esto de manera manual el estado de los pedidos de WooCommerce, sin embargo esto se complica si son muchos pedidos.

En este artículo veremos cómo realizar esto a través de código.

 

Código para cambiar a completado los pedidos

Nos basaremos en un archivo .csv que la pasarela de pago nos brinda en la primera columna de este archivo figuran los IDs de los pedidos que se han pagado.

Recorreremos este archivo línea a línea y extraeremos el ID del pedido, para posteriormente con las funciones de WooCommerce, crear un objeto Order y luego cambiar el estado.

Tener en cuenta que el cambio de estado envía un correo, por lo que te recomiendo que revises los límites de envío de correos de tu hosting, o usar un proceso de cron, o un plugin de encolado de correos.
add_filter( 'the_content', 'dcms_process_orders' );

function dcms_process_orders( $content ) {
	$file_path = ABSPATH . 'lista_ordenes.csv'; //Cambiar por el nombre de tu archivo
	$page_slug = 'procesar-pedidos'; //Cambiar por el slug de tu página

	if ( ! is_page( $page_slug ) || ! file_exists( $file_path ) ) {
		return $content;
	}

	// Open file
	$f = fopen( $file_path, "r" );

	// Get header
	$header = fgetcsv( $f, 1000 );

	// Get body
	while ( $line = fgetcsv( $f ) ) {
		$order_id = $line[0];
		$order    = wc_get_order( $order_id );
		if ( ! $order ) {
			continue;
		}
		$order->set_status('completed');
		$order->save();
	}

	fclose( $f );

	return $content;
}

En el código anterior:

  • Usaremos la carga de una página con slug «procesar-pedidos» para ejecutar el código
  • Usamos el filtro «the_content» para antes que se muestre el contenido se ejecute el código
  • Necesitaremos cambiar la variable $file_path que indica la ruta del archivo .csv
  • Validamos si estamos en la página correcta y si el archivo .csv existe
  • Abrimos el archivo para lectura, obviamos la primera línea que es la cabecera
  • Leemos el archivo a través de un while, vamos obteniendo por cada línea el ID del pedido
  • Obtenemos el objeto de orden, cambiamos el estado y grabamos los cambios
  • Finalmente cerramos el archivo y retornamos el contenido de la página

 

Conclusión

Como has podido comprobar es posible realizar cambios a las órdenes de WooCommerce desde un listado en un archivo .csv, en este artículo hemos visto como cambiar el estado, pero de manera similar podemos realizar otro tipo de cambios.

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Ocultar compra de ciertos productos en WooCommerceOcultar compra de ciertos productos en WooCommerce
  • Agrega una única unidad por producto al carrito de WooCommerceAgrega una única unidad por producto al carrito de WooCommerce
  • Sincronizar WooCommerce y Google SheetsSincronizar WooCommerce y Google Sheets
  • Guía visual de Hooks para StoreFront y WooCommerceGuía visual de Hooks para StoreFront y WooCommerce
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (1 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Omnisend
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad SEO social woocommerce

Populares

Colores personalizados en la administración de WordPress

Heartbeat API de WordPress, aprende a configurarla

Mostrar las variaciones en la lista de productos de WooCommerce

Cómo usar los campos Personalizados en WordPress

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2026 Todos los derechos reservados