Vamos a explicar brevemente como podemos autocompletar pedidos gratuitos de Woocommerce, en las tiendas online muchas veces ofrecemos cupones de descuento o regalamos productos gratuitos. El problema es que estos pedidos no se completan automaticamente por lo que tenemos que hacer algo para Autocompletar pedidos de importe cero en Woocommerce.
Como ya comentó en su dia el gran maestro Fernando Tellado en su blog los productos virtuales no se actualizan automaticamente a completados y hay que hacerlo de manera manual.
Localizar nuestro archivo functions.php
Si ya estás familiarizado con los bloques de código de php en Wordpess puedes ir directamente al siguiente apartado de Añadir código php para autocompletar pedidos gratuitos de Woocomerce.
Si eres nuevo en wordpress o en woocomerce te voy a explicar donde y cómo poner el codigo de php.
Nos vamos a nuestro escritorio de wordpress, en el menú “aparaciencia” verás que hay una opción que pone “editor de archivo de temas”, dependiendo del tema que estés usando este nombre puede variar, por ejemplo en DIVI es “editor de archivo de temas” pero en otros puede aparecer simplemente como “editor de temas”, en cualquier caso simpre es la ultima opción que aparece en el menú “apariencia”.
Localizar nuestro archivo functions.php
Si ya estás familiarizado con los bloques de código de php en Wordpess puedes ir directamente al siguiente apartado de Añadir código php para autocompletar pedidos gratuitos de Woocomerce.
Si eres nuevo en wordpress o en woocomerce te voy a explicar donde y cómo poner el codigo de php.
Nos vamos a nuestro escritorio de wordpress, en el menú “aparaciencia” verás que hay una opción que pone “editor de archivo de temas”, dependiendo del tema que estés usando este nombre puede variar, por ejemplo en DIVI es “editor de archivo de temas” pero en otros puede aparecer simplemente como “editor de temas”, en cualquier caso simpre es la ultima opción que aparece en el menú “apariencia”.
Siempre es recomendable crear un tema hijo o Child Theme para realizar modificaciones en nuestra web de wordpress, si quieres conocer como crear un tema hijo o Child Theme revisa este articulo de nuestro blog.
Tenemos que seleccionar arriba a la derecha el tema el tema que queremos editar, le damos al boton de “Seleccionar” y hacemos clic en la columna de la derecha en el nombre de “functions.php”
Añadir el codigo php para autocompletar pedidos gratuitos de Woocommerce.
Para poder autocompletar pedidos de importe cero de Woocommerce necesitamos un codigo de php que te dejo a continuación:
// Actualiza automáticamente el estado de los pedidos a COMPLETADO
add_action( ‘woocommerce_payment_complete’, ‘actualiza_estado_pedidos_a_completado’ );
function actualiza_estado_pedidos_a_completado( $order_id ) {
global $woocommerce;
if ( !$order_id ) return;
$order = new WC_Order( $order_id );
//Si el total de la orden es cero pasa el estado a completado*/
if ($order->get_total() <= 0 ){$order->update_status( ‘completed’ );}
}
Autocompletar pedidos según el método de pago.
En algunas ocasiones nos interesa autocompletar pedidos de woocommerce en función del sistema de pago que realiza el cliente. Por ejemplo con pago por paypal, redsys o stripe.
En este caso tenemos que incluir una condición para que el sistema detecte el método de pago actual y actualice el estado del pedido a completado.
// Actualiza automáticamente el estado de los pedidos a COMPLETADO para los pagos efectuados con paypal y stripe.
add_action( ‘woocommerce_payment_complete’, ‘actualiza_estado_pedidos_a_completado’ );
function actualiza_estado_pedidos_a_completado( $order_id ) {
global $woocommerce;
//ID’s de las pasarelas de pago a las que afecta
$paymentMethods = array( ‘paypal’, ‘stripe’);
if ( !$order_id ) return;
$order = new WC_Order( $order_id );
//Si el tipo de pago es por paypal o stripe pasa el estado a completado
if ( !in_array( $order->get_payment_method(), $paymentMethods ) ) return;
$order->update_status( ‘completed’ );
}
Para poder saber el id de las pasarelas de pago que tenemos actualmente podemos usar un pequeño codigo de php, os hablé de él en este articulo.
Si teneís alguna duda sobre como se hace no dudéis en ponérmelo en los comentarios.