¿Te has dado cuenta de que WooCommerce utiliza diferentes URLs que en realidad no existen como páginas para mostrar diferente contenido al usuario? ¿Te has vuelto alguna vez loco buscando el template de la página en la que el cliente puede editar sus datos o ver sus pedidos?
No busques más, esas páginas no existen. Se trata de los endpoints de WooCommerce, un sistema que muestra diferentes contenidos en una misma página. Vamos a ver cómo funciona.
Tabla de contenidos
Endpoints vs. shortcodes
Hasta la versión 2.0, WooCommerce mostraba al usuario el contenido en páginas mediante shortcodes. En la versión actual (2.6.14 en el momento de escribir esto) lo sigue haciendo: las páginas Carrito, Finalizar compra o Mi cuenta son páginas normales de WordPress que contienen estos shortcodes especiales. Puedes verlos todos en este artículo:
Pero antes eran muchos más. La página de gracias por su pedido, la de edición de los datos del cliente, la de seguimiento del pedido y algunas otras se implementaban también mediante shortcodes. Un engorro.
La llegada de los endpoints
Sin embargo todo eso cambió a partir de WooCommerce 2.1. Esta colección de shortcodes se agrupó en sólo cuatro, que son los que hay activos a día de hoy:
Acceder
Pero entonces, ¿qué ha pasado con esos contenidos? ¿Dónde están en realidad la página de agradecimiento por el pedido, la de contraseña perdida o la de descargas, que hoy podemos ver en diferentes pestañas de la página Mi cuenta?
Pues, simplemente, esas páginas no existen.
Qué son los endpoints
Sin embargo, resulta que si accedes a www.tutiendachula.com/mi-cuenta/view-order/{ID_de_PEDIDO} puedes hacer el seguimiento de un pedido (si es tuyo, como cliente), o si entras en www.tutiendachula.com/mi-cuenta/edit-account/ puedes editar los detalles de la cuenta. ¿Qué clase de brujería es ésta? 🙂
Pues esto son precisamente los endpoints: en realidad la única página que existe como tal (refiriéndome a los ejemplos que acabo de poner) es la de Mi cuenta, www.tutiendachula.com/mi-cuenta/, y el resto de esos contenidos se generan de forma dinámica en función de la URL llamada.
Qué endpoints existen
Como decía más arriba, en WooCommerce 2.1 se sustituyeron muchos shortcodes por endpoints, repartidos entre las páginas Mi cuenta y Finalizar compra (Checkout). Son los siguientes:
- Mi cuenta (tomando como base www.urldetutienda.com/mi-cuenta)
- Pedidos: /orders/
- Ver pedido: /view-order/{ID_de_PEDIDO}
- Descargas: /downloads/
- Detalles de la cuenta (nombre, email y contraseña): /edit-account/
- Direcciones: /edit-address/
- Editar la dirección de facturación: /edit-address/billing/
- Editar la dirección de envío: /edit-address/shipping/
- Formas de pago (las que tiene el usuario guardadas): /payment-methods/
- Añadir forma de pago (básicamente guardar datos de la tarjeta de crédito): /add-payment-method/
- Contraseña olvidada: /lost-password/
- Logout: /customer-logout/
- Finalizar compra (tomando como base www.urldetutienda.com/finalizar-comprar)
- Página de pago: /order-pay/{ID_de_PEDIDO}
- Añadir forma de pago (sí, está disponible desde ambas páginas): /add-payment-method/
- Eliminar forma de pago: /delete-payment-method/
- Establecer forma de pago por defecto: /set-default-payment-method/
- Order received (“gracias por su pedido”): /order-received/
Es decir, si por ejemplo accedes a www.tutiendasuperchula.com/mi-cuenta/add-payment-method/ (y tienes habilitado el pago con tarjeta de crédito) tendrás ahí la pantalla para guardar los datos de la tarjeta y no tener que ponerlos en cada compra.
Sin embargo, esa página como tal no existe en realidad: si vas a Escritorio > Páginas verás que no está, y si pinchas en Editar página en el menú de administración te encontrarás editando la página Mi cuenta. Se trata de un endpoint.
Cómo modificar los endpoints
La lista de endpoints que te daba más arriba es la que viene con WooCommerce por defecto. Sí, están todos en inglés y la verdad no causa muy buena impresión algo como /mi-cuenta/edit-account/.
¿No quedaría mucho mejor (cara al cliente) algo como /mi-cuenta/editar-detalles/? ¿No puedo cambiar eso? Aún diría más: ¿no puedo desactivar las que no me interesen? La respuesta a ambas preguntas es, por supuesto, que sí.
Y seguro que has visto las opciones miles de veces, pero no las has tocado por no saber para qué servían y/o por miedo a romper algo. De hecho, están bien a la vista. Las opciones para cambiar los endpoints de Mi cuenta están en WooCommerce > Ajustes > Cuentas:
Mientras que los endpoints relativos al checkout están (a ver si lo adivinas) en WooCommerce > Ajustes > Finalizar compra:
No hay peligro en cambiarlos. Es más, si quieres que alguno de ellos no esté disponible para los clientes basta con borrarlo y dejar el campo en blanco. Eso sí, no borres los vitales, como el de pagar, si no quieres quedarte sin ventas. 🙂
Modificar el contenido de los endpoints
Y de esta forma llegamos al asunto escabroso que trae de cabeza a muchos usuarios e implementadores: ¿qué pasa si quiero modificar el contenido de un endpoint? No se trata de una página real así que ¿cómo lo hago?
¿Cómo puedo hacer para cambiar el mensaje de gracias por su pedido o para insertar el píxel de Facebook en la página de pedido recibido?
Bueno, siempre está la técnica “chapucera” y poco recomendable de modificar manualmente el template (en /wp-content/plugins/woocommerce/templates/, que tiene dos inconvenientes:
- O se pierden los cambios cada vez que actualices WooCommerce
- o pasas el template modificado a una ruta dentro de tu plantilla para que no se actualice, con lo que no te beneficias de los sucesivos cambios y mejoras en el código de WooCommerce
Afortunadamente WooCommerce (al igual que algunos otros plugins y WordPress) ponen a nuestra disposición los hooks para cambiar lo que necesitemos, una especie de “ganchos” en los que colgar nuestro propio código. Pero eso es ya un tema más técnico del que (quizá) hable otro día.