Es posible que en algunos casos quieras incentivar futuras compras en tu tienda con WooCommerce mostrando un mensaje de un cupón de descuento para la próxima compra, en este artículo veremos cómo realizar esto a través de código.
Resultado Final
Al final queremos mostrar un mensaje en la primera compra del cliente, al momento de completar el pedio
Y también cuando le llegue el correo de orden completada
Código para mostrar un mensaje en la primera compra
Mostraremos un mensaje tanto al finalizar la primera compra como en el correo de orden completada.
// Código para mostrar mensaje al finalizar la primera compra
add_filter( 'woocommerce_thankyou_order_received_text', 'dcms_add_message_order_received', 10, 2 );
function dcms_add_message_order_received( $str, $order ): string {
if ( count_current_user_orders() > 1 ) {
return $str;
}
return $str . '<div class="woocommerce-message">
Por ser tu primera compra puedes usar el cupón de descuento <strong>PRIMERACOMPRA</strong> para obtener un 10% de descuento en tu siguiente compra.
</div>';
}
// Código para agregar un mensaje al correo de la primera compra
add_action( 'woocommerce_email_order_details', 'dcms_add_message_order_details', 10, 4 );
function dcms_add_message_order_details( $order, $sent_to_admin, $plain_text, $email ) {
if ( $sent_to_admin
|| $order->get_status() !== 'completed'
|| count_current_user_orders() > 1 ) {
return;
}
echo '<p>Por ser tu primera compra puedes usar el cupón de descuento <strong>PRIMERACOMPRA</strong>
para obtener un 10% de descuento en tu siguiente compra.</p>' ;
}
// Función auxiliar que devuelve la cantidad de órdenes válidas del cliente actual
function count_current_user_orders(): int {
$args = array(
'customer' => get_current_user_id(),
'status' => [ 'wc-completed', 'wc-on-hold' ],
);
return count( wc_get_orders( $args ) );
}
En el código anterior:
- Con función auxiliar count_current_user_orders() contamos la cantidad de órdenes válidas que tiene un usuario, esta función la aislamos ya que será usada en diferentes partes del código.
- Usamos el hook de filtro woocommerce_thankyou_order_received_text que hace referencia a la función dcms_add_message_order_received
- La función count_current_user_orders recibe dos parámetros, hacemos una comprobación de la cantidad de órdenes
- Para mostrar el mensaje simplemente concatenamos el mensaje al parámetro $str
- El hook woocommerce_email_order_details, hace referencia a la función dcms_add_message_order_details
- Desde esta función dcms_add_message_order_details podemos imprimir el mensaje, sin embargo antes hay que hacer comprobaciones
Conclusión
Como has podido comprobar, puedes añadir un mensaje para la primera orden del cliente, tanto cuando ha completado el proceso de compra, como cuando le ha llegado el correo de orden completada, y puedes hacerlo directamente a través de código.
La entrada Mostrar un mensaje en la primera compra en WooCommerce es un artículo reciente del sitio DecodeCMS.
0 Commentaires