Cerca
Filtra la ricerca ...
Frase esatta
Categorie

Come personalizzare la pagina account di WooCommerce aggiungendo un nuovo endpoint

Prima di tutto spieghiamo cosa sono gli endpoints, giusto per fare un esempio di endpoints in tema WooCommerce sono quelli che troviamo sotto le impostazioni account.

Ogni endpoint esegue una specifica funzione; in questo articolo spiego come creare dei nuovi endpoints ed eseguire del codice PHP al loro interno o più semplicemente un contenuto.

woocommerce endpoints

Come creare un endpoint in WooCommerce

Poniamo di voler creare la pagina “Resi” con al suo interno un form per la compilazione dell’RMA, cosa che di default WooCommerce non gestisce, andiamo quindi ad implementarla da noi.

Per prima cosa scriviamo una funzione che va ad aggiungere nella pagina account, dove sono già presenti gli altri endpoints link, il nostro nuovo endpoint.

Ora è necessario creare il permalink, scriviamo quindi un’altra funzione in questo modo

programmatore woocommerce

Fate attenzione a ciò che scrivete qui, infatti “resi” è lo slug della pagina, ricordiamocelo perchè ci servirà nella prossima funzione.

A questo punto abbiamo creato la nostra nuova pagina che si chiama Resi, come facciamo a metterci un contenuto ?

Aggiungiamo un’azione in questo modo

Prestare molta attenzione alla parte in grassetto woocommerce_account_resi_endpoint , infatti è necessario inserire lo slug che abbiamo utilizzato in precedenza altrimenti il contenuto non si vedrà

Eseguiamo un controllo sull’esistenza dell’endpoint

Il risultato è il seguente.

Nel mio caso ho eseguito uno shortcode per incorporare il form di reso WooCommerce realizzato con CF7 in questo modo : echo do_shortcode(‘[contact-form-7 id=”51″ title=”Modulo di reso”]’);

personalizzare pagina account woocommerce

 

 

Potrebbe interessarti anche ...

34 commenti su “Come personalizzare la pagina account di WooCommerce aggiungendo un nuovo endpoint”

  1. Buongiorno,
    per prima cosa la ringrazio per la condivisione del codice, Pur essendo un novizio sono riuscito ad implementarlo nel mio sito senza difficoltà.

    Anche io devo visualizzare una Form tramite uno shortcode echo do_shortcode(‘[ninja_form id=4]’); e questo è l’unico passaggio che non riesco a far funzionare. Non mi visualizza il contenuto. Premetto che non ho modificato ancora il codice è ho fatto un puro copia/incolla di quello proposto.

    Altra informazione. è possibile ordinare diversamente le pagine degli Endpoints in modo che quella aggiunta non sia l’ultima dell’elenco? Vorrei far rimare ultima quella del logout.

    Grazie in anticipo per il supporto.
    Max

    Rispondi
    • Buonasera Max,
      va applicato un filtro, ecco un esempio:

      function woo_endpoints_custom_order() {
      $args = array(
      'resi' => __( 'Resi', 'woocommerce' ),
      'edit-account' => __( 'Change My Details', 'woocommerce' ),
      'dashboard' => __( 'Dashboard', 'woocommerce' ),
      'orders' => __( 'Orders', 'woocommerce' ),
      'edit-address' => __( 'Addresses', 'woocommerce' ),
      'payment-methods' => __( 'Payment Methods', 'woocommerce' ),
      'customer-logout' => __( 'Logout', 'woocommerce' ),
      );
      return $args;
      }
      add_filter ( 'woocommerce_account_menu_items', 'woo_endpoints_custom_order' );

      Per il form non saprei, dovrei vederlo, ha scritto correttamente la parte php che richiama lo shortcode ? Se lo shortcode lo inserisce in una pagina il form si vede ?

      Rispondi
  2. Buongiorno Alessandro,
    quello che ho postato è l’intero codice del file functions.php del tema child del sito.

    Se mi dici cosa può esserti utile e dove prenderlo lo posto

    Max

    Rispondi
    • Mi mandi solo il codice che ha scritto per generare l’endpoint compreso dello shortcode di ninja forms.

      Al momento lasciamo perdere il file functions.

      Rispondi
  3. Credo di non capire.
    Quello che ho fatto è stato inserire il suo codice all’interno del file functions, nulla di più ed è quello che ho condiviso prima.
    Lo shortcode invece è stato generato direttamente dal plugin ninja form.
    Ho sbagliato procedura?

    Max

    Rispondi
    • Buonasera Max,

      le ho chiesto il codice intero perchè non avendo davanti il tema in uso non posso fare il debug, ad ogni modo se ha fatto un semplice copia ed incolla del mio e non funziona, i problemi posso essere diversi, andrebbe fatto il debug per capire il motivo del malfunzionamento.

      Quello che posso fare è offrirle una consulenza di un paio d’ore per fare il debug e capire se vi sono errori, purtroppo così a distanza in questo caso mi viene difficile aiutarla.

      Rispondi
  4. Salve, ho riportato il codice così come è scritto qui.
    Tutto è andato per il meglio.
    L’endpoint è stato creato alla perfezione.
    Unico problema è che cliccando sul link mi porta alla pagina 404
    quindi penso che il comando

    add_action( ‘woocommerce_account_resi_endpoint’, function(){
    echo ‘Il mio contenuto qui’;
    } );
    Sia un po da riguardare.. perché a quanto pare o l’echo non fa bene il suo lavoro o non viene creata la pagina dal comando precedente.

    Rispondi
    • Salve Stefano,

      l’echo non ha nulla a che vedere con il 404….

      E’ sufficiente andare nelle impostazioni dei permalink, cambiare impostazioni e salvare, poi rimettere quelle precedenti e risalvare, il problema sparirà.

      Rispondi
  5. ciao Alessio

    io sto provando ad inserire il Codice Fiscale come endpoint in quanto mi serve che questo dato venga inserito per dare la possibilità al cliente di fare degli acquisti speciali. Chiaramente se mi ha fornito questo dato mi piacerebbe non richiederlo nuovamente ma averlo nella my account del cliente. Non capisco come farlo, io ho inserito questo codice

    premetto che uso il page builder Elementor

    https://codeshare.io/GkNMWA

    grazie

    antonio

    Rispondi
  6. ciao Alessio

    grazie per la risposta. Ma probabilmente mi sono spiegato male. Io vorrei avere anche nella pagine my account la voce Codice Fiscale

    in questo modo invece ho solo il campo codice fiscale nel checkout

    come posso farlo?

    grazie

    antonio

    Rispondi
  7. Buongiorno Alessio,
    ho fatto anche io una cosa del genere, e mi piacerebbe sapere come fa a validare i campi ed aggiornarli dopo l’invio.
    Ci sto lavorando da giorni e non riesco a venirne a capo. Inoltre non riesco a trovare niente in rete.
    Dopo i dettagli account io ho una nuova voce con i dettagli del membro di una associazione.
    Mentre per i dettagli account uso l’azione
    add_action(‘woocommerce_save_account_details_errors’, ‘ccmps_validate_wc_extra_profile_field’, 10, 2)
    e per salvare i dati uso
    add_action(‘woocommerce_created_customer’, ‘ccmps_update_extra_profile_field’);
    add_action(‘woocommerce_save_account_details’, ‘ccmps_update_extra_profile_field’);
    non riesco a trovare nulla che mi faccia la validazione solo per il nuovo endpoint edit-member.
    Ha qualche dritta o link da allegare.
    Grazie per la sua eventuale disponibilita
    Alessandro

    Rispondi
  8. Buongiorno,
    sto cercando di capire come funziona php all’interno di wordpress, scusatemi se sembrano banali le mie domande.
    Ho copiato tutto il codice di questa pagina nel mio functions.php solo che cliccando sul nuovo menù Resi o mi da errore 404 o se creo la pagina mi rimanda ad essa.
    Non ottengo la vista del contenuto all’interno della pagina mio-account.
    Dove sbaglio?
    Grazie

    Rispondi
    • Scusatemi, non avevo letto:
      E’ sufficiente andare nelle impostazioni dei permalink, cambiare impostazioni e salvare, poi rimettere quelle precedenti e risalvare, il problema sparirà.
      Adesso tutto funziona.

      Grazie Alessio

      Rispondi
        • Puoi usare diversi metodi, sicuramente il migliore è creare il loop che ti renderizza le pagine di WordPress e ne fai vedere solo una specifica con le condizioni PHP, un endpoint di per s’è non può avere un link diretto ma solo un contenuto specifico, interno o esterno che sia; infatti gli end point nativi, se vai a vedere sono tutti dei template.

          Rispondi
  9. Salve,
    grazie per i preziosi consigli. Ho seguito tutti i passi e sono riuscito a creare la nuova pagina resi (nel mio caso chiamata Compensi).
    Su questa pagina vorrei fare vedere delle informazioni specifici per ogni utente loggato. In particolare il mio progetto prevede la vendita (virtuali) di porzioni di un bene. Per ogni porzione è previsto un compenso annuale proporzionale alle quote di ogni utente. E’ una cosa possibile ?

    Grazie

    Rispondi
  10. Ciao! ottima guida complimenti
    mi chiedevo se oltre agli endpoints c’era un modo per editare il testo o aggiungerne dell’altro nella voce bacheca? è possibile operando sul codice?

    grazie e complimenti ancora

    Rispondi
  11. Sarebbe fantastico!
    intanto puoi soltanto indicarmi in che file .php si trova l’hook dalla dashboard? in attesa di una tua guida provo ad esercitarmi.
    Grazie mille

    Rispondi

Lascia un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.