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
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.
Edición:
Adicionalmente, ¿cómo hacer que este cambio sea seguro frente a actualizaciones?

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)
- Duplica
class-wc-widget-cart.php
; - Copia el duplicado en una carpeta dentro de tu tema, por ejemplo:
cust_woo_widgets
- Realiza los cambios mencionados anteriormente en el archivo;
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 } }
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.

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?

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.

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 );

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();
}
