Sobrescribir Woocommerce

Cómo sobrescribir una función de Woocommerce

En este artículo nos vamos a meter un poco en harina y vamos a programar un poquito y para ello vamos a aprender a sobrescribir Woocommerce.

Para el que no lo sepa, Woocommerce es un plugin para WordPress realmente inmenso y bien trabajado que nos permite crear una tienda electrónica en nuestra página web.

Con este plugin podemos gestionar los productos, las variaciones de esos productos, sus precios junto con su stock e incluso configurar productos digitales o incluso montar tiendas multidivisa.

Aunque como te podrás imaginar, esta vaga descripción se queda muy corta de las posibilidades que nos ofrece este sistema de comercio electrónico.

Woocommerce viene con muchísimas funcionalidades y además existen múltiples plugins y add-ons que nos permiten ampliar la funcionalidad básica del sistema.

Pero en este artículo no vamos a ver cómo instalarlo y configurarlo, no.

Hoy aprenderemos a sobrescribir Woocomerce, ampliar o modificar las funcionalidades que vienen por defecto o incluso los estilos que nos ofrece.

 

Sobrescribiendo estilos

Recientemente en el trabajo he tenido que sobrescribir una función de Woocommerce para añadir una clase a un elemento.

Obviamente lo podría haber hecho por jQuery pero ni es la forma correcta ni habría tenido contenido para sacarme este post de la manga 😛

Si todavía hay algún despistado que no sabe que significa la sobrescritura en la programación, siempre puedes darte una vuelta por este artículo en el que se ahonda sobre los conceptos de la programación orientada a objetos.

Pero básicamente consiste en redefinir el comportamiento de una función.

Ahora bien, el “problema” que tenía en el trabajo es que tenía que añadir una clase css personalizada a una de las templates de Woocommerce, concretamente a la template de las variaciones de un producto.

 

sobrescribir Woocommerce

 

Esta cajita gris de la imagen superior en la que aparece el precio y la disponibilidad de una variación se corresponde con la template que se pinta cuando aparecen variaciones.

Lo fácil y lo incorrecto hubiera sido buscar esa template dentro del core de Woocommerce y añadir ahí la clase que necesitaba, pero cuando se actualice el plugin de Woocommerce ese cambio lo iba a perder así que la solución pasaba por otro lado.

Y ese otro lado era sobrescribir la función de Woocommerce que pinta la variación.

Después de pasar un rato buscando en los ficheros del plugin por fin encontré la función que realizaba dicha tarea.

Dicha función se encuentra en wp-content/plugins/woocommerce/includes/wc-template-functions.php

Con esto ya localizado tan solo hay que copiar el código de la función que nos interesa y copiarlo dentro del archivo functions.php de nuestro child-theme y modificar lo que necesitemos modificar.

En mi caso solo he tenido que añadir la clase woo_single_variation tal y como puedes ver en el código siguiente:

Con este cambio ahora todas las variaciones contendrán la clase que me interesa. Cooool… 😀

 

Extendiendo la clase variación

Este ejemplo es para programadores que sean un poco mas pros pero el fondo de la cuestión es el mismo.

Coger lo que nos da WordPress y Woocommerce por defecto y añadirle nuevas funcionalidades.

El problema que tenía en esta ocasión es que necesitaba sacar todas las variaciones de un producto tengan o no tengan stock.

Según la documentación de Woocommerce la única función que se aproximaba a esto es get_available_variations() de la clase WC_Product_Variable.

Esta clase representa a una variación y tiene diferentes métodos para interactuar con ella.

Para mi disgusto, el método get_available_variations() sólo te devuelve las variaciones de un producto que tienen stock pero yo necesitaba todas, las que tienen stock y las que no…

¿Que hice?

Fácil, crear una clase propia que extendiera de la clase variación original y añadir un método para devolver todas las variaciones disponibles sin discriminar.

Te lo repito, si andas un poco perdido con tactos tecnicismos como sobrescritura, extensión y demás, date una vuelta por el curso de programación orientada a objetos, me lo agradecerás 😉

Esa es la clase que he extendido con el método que necesitaba y para hacer uso de ella:

Y con esto un bizcocho…

 

A pastar!

¿Te ha parecido este un artículo de 5 estrellas? Dame tu valoración:
Review Date
Reviewed Item
▷Cómo sobrescribir una función de Woocommerce
Author Rating
51star1star1star1star1star

Gorka Muñoz Andrés

Me llamo Gorka Muñoz y soy un desarrollador melómano. Combino a la perfección la búsqueda de nuevos grupos con la pasión por la tecnología. Desde chiquitito me ha gustado la programación, ahora que soy mayor estoy metido en el mundo del SEO sin olvidarme del /Dev.

This Post Has One Comment

  1. Juan García

    Buen artículo. Siempre está bien tener a mano estas cosas. Un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.