+34 650908608 [email protected]
Dirección de envío de productos virtuales
funtions php añadir direccion de envio a productos virtuales

Hoy os traigo algo muy sencillo pero muy útil, se trata de añadir direccion de envio productos virtuales Woocommerce. Por defecto cuando marcas un producto de Woocomerce como producto virtual, automáticamente se elimina la posibilidad de añadir la dirección de envío.

Esto es muy lógico dado que si lo marcas como virtual es porque el producto no se va a enviar físicamente. El caso es que en un cliente me vi en la necesidad para hacer una promoción de Black Friday 2020 para poner gratis los gastos de envío. Como ya había varios plugins configurados con diferentes promociones  tuve que recurrir a crear los productos de la promo como virtuales para que no tuvieran gastos de envío. El problema surge cuando el cliente quiere elegir la dirección de envío del producto porque  solo le aparece la dirección de facturación.

Después de varias pruebas y muchas busquedas por Google encontre la solución en estas dos webs:

https://docs.wpdebuglog.com/plugin/woocommerce/4.0.0/filter/woocommerce_order_needs_shipping_address/

https://stackoverflow.com/questions/55466255/always-display-shipping-address-in-woocommerce-email-notifications

woocomerce seleccion producto virutal

La solución en bastante sencilla, solo hay que añadir este pequeño código de php a vuestro archivo de funtions.php  preferiblemente en el tema child, podéis revisar este tutorial de como crear el tema child.

Este es el codigo:

add_filter( ‘woocommerce_cart_needs_shipping_address’, ‘__return_true’, 50 );

funtions php añadir direccion de envio a productos virtuales

Con esto ya tenemos la posibilidad de añadir direccion de envio productos virtualesde Woocommerce aunque  sean virtuales.

Si vas a la orden de compra de Woocommerce se ve como se guarda la dirección de envío dentro del pedido:

woocomerce pedido con direccion

Llegados a este punto parece que todo está solucionado ya que hemos podido añadir direccion de envio productos virtuales Woocommerce pero el cliente me dijo que en las notificaciones de administrador de Woocomerce no aparece la dirección de envío. Esto tiene su explicación igual que en el caso anterior. Al ser productos virtuales el sistema asume que no hay que poner la dirección de envío en ningún sitio.

gracias por tu pedido sin direccion de envio

Nuestra siguiente tarea es arreglar las notificaciones de woocommerce sin dirección de envío. Para ello debemos incluir mediante php un código que pase la dirección de envío que aparece en el pedido de woocommerce al email de notificación del administrador.

Este es el código que tenemos que añadir a nuestro archivo del tema Child funtions.php:

function enviar_direccion_productos_virtuales( $needs_address, $hide ) {
$needs_address = true;
return $needs_address;
}
add_filter( ‘woocommerce_order_needs_shipping_address’, ‘enviar_direccion_productos_virtuales’, 10, 2 );

funtions php añadir direccion de envio notificaciones del administrador

Con esto ya conseguimos añadir direccion de envio productos virtuales Woocommerce y que aparezca la dirección de envío en las notificaciones para productos virtuales.

gracias por tu pedido con direccion de envio