Caso de uso
Nos piden montar una web donde poder mostrar el catálogo de productos de los que dispone la empresa.
No van a necesitar montar un e-commerce, por lo que el carro de compra, checkout y demás secciones propias de una tienda online no las necesitaremos.
En muchas ocasiones optamos por sistemas de e-commerce completos, como puede ser Woocommerce, deshabilitando las opciones de añadir al carro, convirtiéndolo en un catálogo. Pero estaríamos matando moscas a cañonazos, con la consiguiente pérdida de rendimiento.
Entidades
En este caso de uso, las entidades que nos encontramos, se reducen a:
- Product: Representa a un determinado producto.
- Gallery: Será la galería de imágenes asociada a cada producto.
- Image: Cada una de las imágenes de una galería.
Los productos los agruparemos por categorías (product_category), quedando el diagrama de clases:
<< Diagrama de clases >>
Implementación
Realizaremos la implementación de los modelos de datos y controladores en plugin al que llamaremos ‘Catálogo’, dejando la vista delegada al tema hijo que estemos usando.
Para los distintos atributos que necesitemos, para facilitar la implementación, haremos uso del plugin Advanced Custom Fields, que nos permitirá definirlos de forma muy sencilla y poco esfuerzo.
- Product: Definiremos un custom post type ‘product’ para definir dicha entidad.
- Gallery: Será un campo personalizado de tipo repeater que contendrá elementos de tipo ‘media’
- Image: Serán los elementos de tipo ‘media’ que contiene la galería.
- Product_category: Definiremos una taxonomía personalizada.
El código del plugin está disponible en este repositorio de Github.