Cómo sobreescribir widgets de Woocommerce

Nuestro último proyecto fue un Woocommerce, donde me tocó modificar varias funcionalidades del propio Woocommerce para adaptarlas al especial funcionamiento que debía tener la tienda.

Para evitar que una actualización de Woocommerce, se cargue todas las modificaciones que yo hago, debía sobreescribir los archivos en una carpeta especial del Theme que estábamos utilizando y después deshabilitar el widget original, para que cargase el modificado por mí. Os digo cómo hacerlo:

1. Copio el archivo de la clase donde está el widget.

2. Dentro de la carpeta de mi Theme, habrá un directorio llamado “woocommerce”, debo crear una carpeta nueva dentro llamada “widgets” si no la hay ya: woocommerce/widgets.

3. Cambio el nombre al archivo (por ejemplo custom_elnombreoriginal.php).

4. Lo abro, extiendo mi nueva clase de la que ya existe, y sólo dejo la función widget():

Ej:

class Custom_WC_Widget_Brand_Nav extends WC_Widget_Brand_Nav {

function widget( $args, $instance ) {

//esta función es la que hay en el wc_widget_brand_nav original, y aquí es donde hago los cambios que quiera.
}

}

5. En mi archivo functions.php deshabito el que viene por defecto y activo el mío.

Ej:

add_action( ‘widgets_init’, ‘override_woocommerce_widgets’, 15 );
function override_woocommerce_widgets() {

if ( class_exists( ‘WC_Widget_Brand_Nav’ ) ) {

unregister_widget( ‘WC_Widget_Brand_Nav’ );
include_once( ‘woocommerce/widgets/custom-wc-widget-brand-nav.php’ );
register_widget( ‘Custom_WC_Widget_Brand_Nav’ );

}

}

Listo!

Leave a Reply

  • (will not be published)

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">