Afișează widgetul minicart Woocommerce în sidebar-ul paginii de checkout și securizează modificările la actualizări
Înainte să pun întrebarea aici vreau să menționez că am întrebat deja pe stackoverflow și pe forumul wordpress dar nu am primit niciun răspuns. Așa că în final am ajuns aici.
Am instalat pluginul woocommerce în wordpress 3.5.2. Totul funcționează bine cu woocommerce. Am creat un folder numit woocommerce și am copiat toate fișierele template din woocommerce în folderul template-ului meu. Însă există ceva unde m-am blocat complet. În pagina de checkout woocommerce vreau să afișez totalurile coșului în sidebar. Dar nu se afișează acolo. În celelalte pagini funcționează bine. Poate cineva să-mi spună ce e greșit aici? Orice ajutor și sugestii vor fi apreciate. Mulțumesc
Actualizare
Aici este captura de ecran pentru widget-ul coșului woocommerce din sidebar care poate fi afișat în toate paginile cu excepția paginii de checkout.
Editare:
Suplimentar, cum pot face această modificare sigură la actualizări?

Widget-ul coșului nu este afișat deoarece este configurat să nu apară pe pagina de coș și de finalizare comandă
. Dacă doriți să modificați acest comportament, verificați fișierul class-wc-widget-cart.php
, unde veți găsi următoarea linie:
if ( is_cart() || is_checkout() ) return;
Modificați-o în:
if ( is_cart() ) return;
Pentru a afișa widget-ul pe pagina de finalizare comandă.
Notă: Această modificare, dacă este făcută în directorul plugins/woocommerce/classes/widgets, va fi suprascrisă la actualizări.
Edit: Informații suplimentare despre cum să suprascrieți widget-ul și să faceți modificările rezistente la actualizări
Sursă: http://www.skyverge.com/blog/overriddin-woocommerce-widgets/ (Opțiunea 5)
- Duplicați
class-wc-widget-cart.php
; - Copiați duplicatul într-un folder din tema dumneavoastră, de exemplu:
cust_woo_widgets
- Faceți modificările menționate mai sus în fișier;
În plus, faceți următoarea modificare în duplicatul widget-ului:
class Custom_WooCommerce_Widget_Cart extends WooCommerce_Widget_Cart { function widget( $args, $instance ) { // copiați funcția widget din woocommerce/classes/widgets/class-wc-widget-cart.php } }
Adăugați următorul cod în
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' ); } }
Notă: Consultați sursa pentru mai multe informații; netestat.

mulțumesc pentru răspuns, dar poți să-mi spui ce se întâmplă cu actualizările plugin-urilor? Adică atunci când plugin-ul va fi actualizat, acele modificări vor fi suprascrise, deci cum putem rezolva această problemă?

În general poți suprascrie șabloanele WooCommerce: http://docs.woothemes.com/document/template-structure/, dar pentru widget-uri nu este (întotdeauna) atât de ușor de făcut. Pentru mai multe informații despre cum să faci asta, citește acest articol: http://www.skyverge.com/blog/overriddin-woocommerce-widgets/; și acesta: http://wordpress.org/support/topic/possible-to-overwrite-a-woocommerce-widget.

aceasta ar trebui să fie soluția corectă, filtrul a fost adăugat de WooCommerce - răspunsul de la @something este depășit. poți folosi și metoda __return_false:
add_filter( 'woocommerce_widget_cart_is_hidden', '__return_false', 40, 0 );

Nu este recomandat să modifici fișierul de bază al plugin-ului, deoarece la actualizare modificările tale se vor pierde. Este mai bine să folosești următorul cod pentru a afișa widget-ul coșului în bara laterală pe pagina de finalizare a comenzii.
add_filter('woocommerce_widget_cart_is_hidden', 'show_cart_on_checkout');
function show_cart_on_checkout()
{
return is_cart();
}
