Afișează widgetul minicart Woocommerce în sidebar-ul paginii de checkout și securizează modificările la actualizări

2 iul. 2013, 10:13:53
Vizualizări: 31.3K
Voturi: 6

Î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.

captură de ecran cu widgetul minicart woocommerce în sidebar

Editare:
Suplimentar, cum pot face această modificare sigură la actualizări?

0
Toate răspunsurile la întrebare 3
2

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)

  1. Duplicați class-wc-widget-cart.php;
  2. Copiați duplicatul într-un folder din tema dumneavoastră, de exemplu: cust_woo_widgets
  3. Faceți modificările menționate mai sus în fișier;
  4. Î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
      }
    }
    
  5. 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.

2 iul. 2013 11:25:18
Comentarii

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ă?

NewUser NewUser
2 iul. 2013 13:02:02

Î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.

Nicolai Grossherr Nicolai Grossherr
2 iul. 2013 13:14:19
2

Am adăugat următorul cod în fișierul meu functions.php și acum coșul de cumpărături este afișat pe toate paginile.

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

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

cyptus cyptus
20 feb. 2017 17:53:05

Niciunul dintre filtre nu mai funcționează - aveți vreo idee de ce?

NewUser NewUser
30 nov. 2017 02:03:27
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();
    }
15 mar. 2017 10:58:41