Cambiare bottone Aggiungi al carrello con Dettaglio Prodotto Woocommerce

Tempo di lettura: < 1 minuto

Voglio svelarvi un trick che vi permette di cambiare il bottone di default di WooCommerce “Aggiungi al carrello”, con un bottone che vi permette di entrare all’interno del dettaglio del prodotto.

Questa operazione può risultare utile per fare in modo che i vostri potenziali clienti, facciano l’acquisto del prodotto, solo dopo averne visualizzato le caratteristiche nel dettaglio.

Ecco a voi il codice completo, da inserire all’interno del file functions.php del vostro tema; mi raccomando, prima eseguite un backup, per evitare inconvenienti.

/*INSERISCI QUESTO FILE ALLINTERNO DEL FILE FUNCTIONS.PHP DEL TUO TEMA*/

/*STEP 1 - FUNZIONE PER RIMUOVERE IL BOTTONE AGGIUNGI AL CARRELLO*/

function remove_loop_button(){
remove_action( woocommerce_after_shop_loop_item, woocommerce_template_loop_add_to_cart, 10 );
}
add_action(init,remove_loop_button);

/*STEP 2 - FUNZIONE CHE AGGIUNGE IL NUOVO PULSANTE PER ENTRARE NEL DETTAGLIO DEL PRODOTTO */

add_action(woocommerce_after_shop_loop_item,replace_add_to_cart);
function replace_add_to_cart() {
global $product;
$link = $product->get_permalink();
echo do_shortcode(<a href=".$link." class="button addtocartbutton">Dettaglio Prodotto</a>); /* cambiate la stringa in base a quello che volete scrivere */
}

Vediamolo insieme:

La prima funzione, permette semplicemente di rimuovere il pulsante “Aggiungi al carrello”. In questo modo abbiamo il campo libero, per poter inserire il nostro nuovo pulsante con la funzione nuova.

La seconda funzione, permette invece, di sostituire al precedente, il nuovo bottone con la dicitura “Dettaglio Prodotto”.

Ovviamente potete cambiare la stringa a vostro piacimento.

Questo nuovo bottone vi permetterà di entrare all’interno del dettaglio del prodotto e solo successivamente aggiungerlo al carrello.
dettaglio-prodotto-woocommerce
Qualche dubbio e/o suggerimento? Commentate e parliamone.

40 commenti su “Cambiare bottone Aggiungi al carrello con Dettaglio Prodotto Woocommerce”

  1. Ciao Emiliano e grazie per l’articolo.
    Purtroppo ho provveduto ad inserire in fondo alla pagina lo script ma non sembra funzionare … Forse sbaglio qualche cosa …
    Hai suggerimenti ?

    1. Ciao Mauro,

      grazie per aver seguito la guida 🙂

      Cerchiamo di capire il problema.

      – Il codice l’hai inserito alla fine del file functions.php ? Se vuoi fai copia ed incolla del codice del file ed inviameli a questa pagina.
      Cosi vedo se è tutto corretto.

      – per scrupolo prova ad attivare un tema di default di WordPress (al posto di quello corrente), per eliminare ogni eventuale conflitto portato dal tema.

      – non succede proprio nulla dopo che inserisci il codice ?

      Fammi sapere
      Un saluto
      Emiliano

      1. Ciao Emiliano,
        inserendo lo script in fondo al file Functions.php non solo il pulsante resta identico, ma se clicco sull’immagine per vedere il prodotto esce un errore sintattico

        Parse error: syntax error, unexpected T_STRING in … function.php

        Il Template che usa l’Ente per il quale sto sistemando il sito è New Maxx fatto proprio per woocommerce, quindi non credo che ci sino conflitti.

        Dov’è che sbaglio ?

        1. Molto probabilmente è un errore di sintassi che viene generato dopo che copi il codice all’interno del file.

          Il codice l’ho testato sulla mia sede locale e funziona, quindi il codice che hai copiato ed incollato non contiene errori di sintassi. 😉

          Prova a fare cosi :

          – ricopia il codice che ti indico qui sotto e fai attenzione che sia proprio al fondo del file :

          /*STEP 1 – FUNZIONE PER RIMUOVERE IL BOTTONE AGGIUNGI AL CARRELLO*/

          function remove_loop_button(){
          remove_action( ‘woocommerce_after_shop_loop_item’, ‘woocommerce_template_loop_add_to_cart’, 10 );
          }
          add_action(‘init’,’remove_loop_button’);

          /*STEP 2 – FUNZIONE CHE AGGIUNGE IL NUOVO PULSANTE PER ENTRARE NEL DETTAGLIO DEL PRODOTTO */

          add_action(‘woocommerce_after_shop_loop_item’,’replace_add_to_cart’);
          function replace_add_to_cart() {
          global $product;
          $link = $product->get_permalink();
          echo do_shortcode(‘Dettaglio Prodotto‘); /* cambiate la stringa in base a quello che volete scrivere */
          }

          – Mi scrivi esattamente l’errore che ricevi ?

          ps : per velocizzare, se mi fai vedere il file functions.php, posso vedere se il problema deriva da li 🙂

          Emiliano

          1. Ciao Emiliano,
            l’errore che esce anche nella home page del sito (quindi non si vede pi il sito) è il seguente (cripto solo il nome del sito per non fare pubblicità):

            Parse error: syntax error, unexpected T_STRING in /web/htdocs/www.[nomesito].org/home/wp-content/themes/news-maxx/functions.php on line 131

            Il file Function te lo mando via mail perchè magari qui è un po lungo da trascrivere

            P.S. non ricevo le notifiche delle risposte che mi dai …

          2. Ciao Mauro,

            grazie per il file.

            Te l’ho mandato corretto via email.
            Infatti era semplicemente un errore di sintassi.
            Quando hai fatto copia ed incolla c’erano degli errori di punteggiatura e dava errore.
            Prova adesso e fammi sapere

            Per le notifiche alle risposte grazie della segnalazione. Verifico 😉

            Ciao

  2. Ciao,
    ho provato a copiare e incollare il codice che hai scritto ma penso mi dia lo stesso errore che ha avuto Mauro nell’altro commento.
    E’ possibile sapere come avete risolto?
    Grazie,
    Emilio.

    1. Ciao Emilio,

      posso sapere esattamente che errore ricevi ? Cosi posso aiutarti 🙂

      Il codice funziona, magari è solo un errore di sintassi o dove lo hai posizionato.

  3. Ciao emiliano vorrei chiederti se e possibile linkare il bottone ( DETTAGLI PRODOTTI ) a una pagina specifica a mia scelta grazie mille..

    1. Ciao Mirko,

      grazie per il commento.

      Dovrebbe essere sufficiente fare così :

      Al codice che vedi sostituisci la linea

      $link = $product->get_permalink();

      con

      $link = “http://www.nome-del-tuo-link.it”;

      dove cambi “http://www.nome-del-tuo-link.it” con il tuo link a cui vuoi far puntare.

      Prova e fammi sapere

    2. Se per caso non funziona, causa ultima versione di Woocommerce, utilizza questo codice :

      /**
      * Fai il redirect che desideri
      */
      function my_custom_add_to_cart_redirect( $url ) {
      $url = get_permalink( 1 ); // devi inserire l’id della pagina a cui vuoi far indirizzare
      return $url;
      }
      add_filter( ‘woocommerce_add_to_cart_redirect’, ‘my_custom_add_to_cart_redirect’ );

      dove cambi 1, con l’id della pagina a cui vuoi far rimandare.

      Successivamente installi un plugin come Loco Translate, per cambiare il testo del bottone in ciò che desideri

  4. Ciao, ho fatto come hai descritto inserendolo in function.php e l’ha aggiunto ma senza eliminare ‘acquista’, quindi adesso me ne ritrovo due, uno che va alla pagina del prodotto e l’altro (acquista) che non aggiunge al carrello dalla pagina shop.. hai qualche suggerimento da darmi?

    1. Ciao Micol,

      grazie per aver seguito la mia guida.

      Potresti rimuovere il pulsante che non desideri via CSS.
      Per favore, mi indichi l’url della pagina e quale bottone desideri NON mostrare, cosi cerco di aiutarti.

      Un saluto!

      Emiliano

        1. Ciao Micol,

          Proviamo!
          Al momento, sotto l’immagine del prodotto, vedo un quadrato con una freccia che al click non rimanda a nulla.

          Vorresti, che al click di questo bottone, rimandi al dettaglio prodotto oppure aggiunga al carrello?

          Un saluto! 🙂

          Emiliano

          1. Strano, dovrebbe aprirsi una visione in overlay del prodotto dalla quale acquistare senza entrare all’interno della pagina del prodotto.. dal mio chrome riesco a vederlo, in incognito non appare nulla, comunque vedi ho aggiunto il bottone “acquista” ma dalla pagina shop non funziona. Suggerimenti?

          2. Ciao Micol,

            ho visto il pulsante acquista e ho provato ad aggiungere un prodotto al carrello.

            Il messaggio mi dice che è stato aggiunto, ma effettivamente non lo vedo.
            Smette di funzionare dopo che metti il mio codice, o ha sempre fatto cosi?

            Se cosi non non fosse, molto probabilmente c’è qualche problema di settaggio del tema.

            Un saluto!

  5. Ciao Emiliano,

    con il primo script, elimino tranquillamente il tasto “vecchio” se volessi far sì che il tasto rimandasse direttamente all’articolo su amazon, aprendo un nuovo link, come posso fare?

    questo qui sotto da te indicato, fa il redirect di una pagina interna del sito in base all’id, se volessi uscire fuori dal mio sito?

    Grazie in Anticipo

    function my_custom_add_to_cart_redirect( $url ) {
    $url = get_permalink( 1 ); // devi inserire l’id della pagina a cui vuoi far indirizzare
    return $url;
    }
    add_filter( ‘woocommerce_add_to_cart_redirect’, ‘my_custom_add_to_cart_redirect’ );

    Read more https://emprsitiweb.com/cambiare-bottone-aggiungi-al-carrello-con-dettaglio-prodotto-woocommerce/

    1. Ciao Michele,

      prova a cambiare la riga

      $url = get_permalink( 1 );

      con

      $url = "https://www.iltuolink.com";

      tra gli apici metti il link a cui vuoi far puntare il bottone.

      Prova e fammi sapere 🙂

      1. Ciao Emiliano,
        purtroppo non andava, sono riuscito così:

        add_action(‘woocommerce_after_shop_loop_item’,’replace_add_to_cart’);
        function replace_add_to_cart() {
        global $product;
        $link = “https://www.miosito.it”;
        echo do_shortcode(‘acquista‘);
        }

        va bene o vedi qualche errore?
        poi volevo chiederti, se inserisco più prodotti, ho modo di cambiare il redirect di ogni singolo tasto, per far sì che vadano direttamente sull’articolo specifico, del bottone cliccato, sull’altro sito

        spero di essere stato chiaro

        ps: la formula da me usata, è la stessa da te citata, purtroppo quando hai suggerito la stessa modifica ad un altro utente,erroneamente hai inserito una strana formattazione sulle virgolette, e quindi la stringa non viene accettata.

        grazie in anticipo 🙂

  6. Ciao, ho un problema riscontrato anche da altri utenti: quando applico il codice il sito mi restituisce un errore e si blocca.

    Inserisco di seguito il codice e ti ringrazio in anticipo:

    get_permalink();
    echo do_shortcode(SCOPRI DI PIU’); /* cambiate la stringa in base a quello che volete scrivere */
    }

    1. Ciao Alessio, il codice che mi hai postato sembra incompleto, e molto probabilmente è questa la causa del problema.

      Prova cosi:

      add_action(woocommerce_after_shop_loop_item,replace_add_to_cart);
      function replace_add_to_cart() {
      global $product;
      $link = $product->get_permalink();
      echo do_shortcode(<a href=".$link." rel="nofollow ugc">SCOPRI DI PIU'</a>); /* cambiate la stringa in base a quello che volete scrivere */
      }
      

      Fammi sapere se ora funziona. 🙂

  7. Lucio Marocaine

    Ciao, a me appare questo errore. syntax error, unexpected ‘<'

    e in pratica ho copiato e incollato, messo scopri di più al posto di dettagli prodotto e tolto il tuo commento.

  8. Ciao Emiliano,
    io vorrei aggiungere nella vetrina di woocommerce (e magari anche all’interno del prodotto) una scritta linkata alla pagina di registrazione: “registrati per avere prezzi personalizzati”.
    Come posso fare? Ho fatto delle prove con quanto scritto qui sopra ma con scarsi risultati purtroppo.

    Ti ringrazio in anticipo, Andrea

  9. Ciao io vorrei fare esattamente il contrario ma non ci riesco, dopo che aggiungo al carrello dalla pagina archivio prodotti mi redireziona alla pagina del singolo prodotto. Sai come posso evitarlo. Grazie

  10. Grazie emiliano, non ho ancora provato questo tuo trick, somiglia molto a qualcosa che starei cercando, ovvero che faccia ciò che tu descrivi con la differenza che vorrei fare entrare nel dettaglio del prodotto solo per uno specifico prodotto. Come sarebbe possibile farlo ?
    Grazie!

  11. Ciao Emiliano, sarebbe possibile disattivare il pulsante carrello solo per un determinato prodotto? e poi volevo segnalarti l’errore che ricevo: “Warning
    : Use of undefined constant remove_loop_button – assumed ‘remove_loop_button’ (this will throw an Error in a future version of PHP) in…” come devo risolverlo?
    Grazie

  12. Nella pagina dello shop quando un prodotto è esaurito compare la scritta Leggi tutto. Come faccio a modificarla ? Vorrei che venisse scritto Esaurito :). Grazie mille davvero!Anna

Lascia un commento