Mostrare il widget del minicarrello WooCommerce nella barra laterale della pagina di checkout? E come rendere sicuro questo aggiornamento sovrascrivendo il widget?

2 lug 2013, 10:13:53
Visualizzazioni: 31.3K
Voti: 6

Prima di porre la domanda qui voglio dire che ho già chiesto su stackoverflow e sul forum di WordPress ma non ho ricevuto alcuna risposta. Quindi alla fine sono arrivato qui.

Ho installato il plugin WooCommerce nel mio WordPress 3.5.2. Tutto funziona bene con WooCommerce. Ho creato una cartella chiamata woocommerce e ho copiato tutti i file dei template di WooCommerce all'interno della cartella del mio tema. Ma c'è qualcosa su cui sono completamente bloccato. Nella pagina di checkout di WooCommerce voglio mostrare i totali del carrello nella barra laterale. Ma non viene visualizzato lì. Nelle altre pagine funziona correttamente. Qualcuno può gentilmente dirmi cosa c'è di sbagliato qui? Qualsiasi aiuto e suggerimento sarà molto apprezzato. Grazie

Aggiornamento

Ecco lo screenshot del widget del carrello WooCommerce nella barra laterale che può essere mostrato in tutte le pagine tranne quella di checkout.

screenshot del widget del carrello WooCommerce nella barra laterale

Modifica:
In aggiunta, come rendere questa modifica sicura dagli aggiornamenti?

0
Tutte le risposte alla domanda 3
2

Il widget del carrello non viene visualizzato perché è configurato per non mostrarsi nelle pagine del carrello e checkout. Se vuoi modificare questo comportamento, dai un'occhiata a class-wc-widget-cart.php, dove troverai la seguente riga:

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

Modificala in:

if ( is_cart() ) return;  

Per mostrare il widget nella pagina di checkout.

Nota: Questa modifica, se effettuata nella cartella plugins/woocommerce/classes/widgets, verrà sovrascritta durante gli aggiornamenti.


Modifica: Informazioni aggiuntive su come sovrascrivere il widget e rendere le modifiche sicure dagli aggiornamenti
Fonte: http://www.skyverge.com/blog/overriddin-woocommerce-widgets/ (Opzione 5)

  1. Duplica class-wc-widget-cart.php;
  2. Copia il duplicato in una cartella all'interno del tuo tema, ad esempio: cust_woo_widgets
  3. Apporta le modifiche sopra indicate al file;
  4. Inoltre, apporta la seguente modifica al widget duplicato:

    class Custom_WooCommerce_Widget_Cart extends WooCommerce_Widget_Cart {
      function widget( $args, $instance ) {
    // copia la funzione widget da woocommerce/classes/widgets/class-wc-widget-cart.php
      }
    }
    
  5. Aggiungi il seguente codice al tuo 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 fonte per maggiori informazioni; non testato.

2 lug 2013 11:25:18
Commenti

grazie per la risposta ma puoi dirmi cosa succede con gli aggiornamenti dei plugin? Significa che quando il plugin verrà aggiornato questo verrà sovrascritto, quindi come risolvere questo problema?

NewUser NewUser
2 lug 2013 13:02:02

Generalmente puoi sovrascrivere i template di woocommerce: http://docs.woothemes.com/document/template-structure/, ma per i widget non è (sempre) così semplice da fare. Per maggiori informazioni su come farlo, leggi questo: http://www.skyverge.com/blog/overriddin-woocommerce-widgets/; e questo: http://wordpress.org/support/topic/possible-to-overwrite-a-woocommerce-widget.

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

Ho aggiunto il seguente codice al mio file functions.php e ora il carrello viene visualizzato su tutte le pagine.

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

questa dovrebbe essere la soluzione corretta, il filtro è stato aggiunto da woocommerce - la risposta di @something è obsoleta. puoi anche utilizzare il metodo __return_false:

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

cyptus cyptus
20 feb 2017 17:53:05

Entrambi i filtri non funzionano più - qualche idea sul perché?

NewUser NewUser
30 nov 2017 02:03:27
0

Non è consigliabile modificare i file core del plugin poiché con l'aggiornamento le tue modifiche andranno perse. È meglio utilizzare il seguente codice per mostrare il widget del carrello nella sidebar durante la pagina di checkout

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