Mostrar el widget del minicarrito de Woocommerce en la barra lateral de la página de pago y cómo hacer esta actualización segura sobrescribiendo el widget

2 jul 2013, 10:13:53
Vistas: 31.3K
Votos: 6

Antes de hacer la pregunta aquí quiero decir que ya he formulado esta pregunta en stackoverflow y el foro de wordpress pero no he recibido ninguna respuesta. Así que finalmente vine aquí.

He instalado el plugin woocommerce en mi wordpress 3.5.2. Todo funciona bien con woocommerce. He creado una carpeta llamada woocommerce y he copiado todos los archivos de las plantillas de woocommerce dentro de mi carpeta de plantillas. Pero hay algo en lo que estoy totalmente atascado. En la página de pago de woocommerce quiero mostrar los totales del carrito en la barra lateral. Pero no se muestra allí. En otras páginas funciona bien. ¿Puede alguien decirme qué está mal aquí? Cualquier ayuda y sugerencia será realmente apreciada. Gracias

Actualización

Aquí está la captura de pantalla del widget del carrito de woocommerce en la barra lateral que se puede mostrar en todas las páginas excepto en la página de pago.

Captura de pantalla del widget del carrito de Woocommerce en la barra lateral

Edición:
Adicionalmente, ¿cómo hacer que este cambio sea seguro frente a actualizaciones?

0
Todas las respuestas a la pregunta 3
2

El widget del carrito no se muestra porque está configurado para no aparecer en la página de carrito y finalizar compra. Si deseas cambiar esto, revisa el archivo class-wc-widget-cart.php, allí encontrarás la siguiente línea:

if ( is_cart() || is_checkout() ) return;  

Cambiarla por:

if ( is_cart() ) return;  

Para mostrar el widget en la página de finalizar compra.

Nota: Esto será sobrescrito en las actualizaciones si se modifica directamente en la carpeta plugins/woocommerce/classes/widgets.


Edición: Información adicional sobre cómo sobrescribir el widget y hacer los cambios seguros frente a actualizaciones
Fuente: http://www.skyverge.com/blog/overriddin-woocommerce-widgets/ (Opción 5)

  1. Duplica class-wc-widget-cart.php;
  2. Copia el duplicado en una carpeta dentro de tu tema, por ejemplo: cust_woo_widgets
  3. Realiza los cambios mencionados anteriormente en el archivo;
  4. Adicionalmente, haz el siguiente cambio en el widget duplicado:

    class Custom_WooCommerce_Widget_Cart extends WooCommerce_Widget_Cart {
      function widget( $args, $instance ) {
    // copia la función widget de woocommerce/classes/widgets/class-wc-widget-cart.php
      }
    }
    
  5. Agrega el siguiente código en tu functions.php:

    add_action( 'widgets_init', 'override_woocommerce_widgets', 15 );
    function override_woocommerce_widgets() { 
      if ( class_exists( 'WooCommerce_Widget_Cart' ) ) {
        unregister_widget( 'WooCommerce_Widget_Cart' ); 
        include_once( 'cust_woo_widgets/widget-cart.php' );
        register_widget( 'Custom_WooCommerce_Widget_Cart' );
      } 
    }
    

Nota: Consulta la fuente para más información; no probado.

2 jul 2013 11:25:18
Comentarios

gracias por la respuesta, pero ¿puedes decirme qué pasa con las actualizaciones de los plugins? Quiero decir, cuando el plugin se actualice, ¿esto sobrescribirá los cambios? ¿Cómo solucionar esto?

NewUser NewUser
2 jul 2013 13:02:02

Generalmente puedes sobrescribir las plantillas de WooCommerce: http://docs.woothemes.com/document/template-structure/, pero para los widgets no es (siempre) tan fácil de hacer. Para más información sobre cómo hacerlo, lee esto: http://www.skyverge.com/blog/overriddin-woocommerce-widgets/; y esto: http://wordpress.org/support/topic/possible-to-overwrite-a-woocommerce-widget.

Nicolai Grossherr Nicolai Grossherr
2 jul 2013 13:14:19
2

Agregué el siguiente código a mi functions.php y ahora el carrito se muestra en todas mis páginas.

add_filter( 'woocommerce_widget_cart_is_hidden', 'always_show_cart', 40, 0 );
function always_show_cart() {
    return false;
}
13 mar 2016 12:32:47
Comentarios

esta debería ser la solución correcta, el filtro fue agregado por woocommerce - la respuesta de @something está desactualizada. también puedes usar el método __return_false:

add_filter( 'woocommerce_widget_cart_is_hidden', '__return_false', 40, 0 );

cyptus cyptus
20 feb 2017 17:53:05

Ambos filtros ya no funcionan - ¿alguna idea de por qué?

NewUser NewUser
30 nov 2017 02:03:27
0

No se recomienda modificar el archivo principal del plugin ya que en la actualización se perderán los cambios. Es mejor utilizar el siguiente código para mostrar el widget del carrito en la barra lateral de la página de pago:

add_filter('woocommerce_widget_cart_is_hidden', 'mostrar_carrito_en_pago');

    function mostrar_carrito_en_pago()
    {
        return is_cart();
    }
15 mar 2017 10:58:41