Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress
Code

Visualizzare gli Articoli Correlati di WordPress con la tassonomia e un Custom Post Type

by
Difficulty:IntermediateLength:MediumLanguages:

Italian (Italiano) translation by Cinzia Sgariglia (you can also view the original English article)

Final product image
What You'll Be Creating

A volte volete che i post sul vostro blog compaiano su più pagine nel vostro sito WordPress che sul solo blog.

Avete già la possibilità di utilizzare gli archivi della categoria e della tassonomia, così come i tag. Ciò consente di suddividere il contenuto e aggiungere una varietà di sezioni al sito blog o di notizie.

Ma a volte potreste avere degli articoli che si riferiscono a un custom post type. Un buon esempio di questo è un negozio. I prodotti nel vostro negozio sono custom post type, e al fine di aiutarvi a vendere tali prodotti, potete scrivere degli articoli per il blog su di loro.

In questo tutorial, vi mostrerò come aggiungere un elenco di articoli rilevanti per ogni pagina di un custom post type sul vostro sito. Farò questo utilizzando una tassonomia personalizzata, in cui termini corrisponderanno ai nomi di quei prodotti per i quali volete scrivere degli articoli. Vi mostrerò come assegnare la tassonomia personalizzata sia agli articoli dei prodotti che agli articoli standard, e utilizzare tale relazione per produrre una lista di articoli nella pagina singola del prodotto.

Di cosa avete bisogno

Per seguire questo tutorial, avrete bisogno di:

  • Un'installazione di sviluppo di WordPress — non aggiungete nulla al vostro sito online fino a quando non lo farete funzioanare!
  • Un editor di codice.
  • Un tema che potete modificare direttamente o uno con un hook dopo il contenuto. Se state usando un tema di terze parti senza hook, allora avrete bisogno di creare un tema child e modificarlo.

Impostare il plugin

Iniziate creando un nuovo plugin e aggiungendogli le informazioni di intestazione:

Se non avete familiarità, date un'occhiata al nostro corso su come creare il vostro primo plugin. E sentitevi liberi di modificare il testo di intestazione sopra, sostituendolo con il vostr nome, URI, ecc.

Registrare il Post Type

Se non state lavorando con un post type che è stato registrato da un plugin esistente sul vostro sito, è necessario iniziare registrandone uno.

Facciamo questo creando una funzione e agganciandola all'hook init. Nel vostro plugin, aggiungete questo:

Questo registra il plugin tutsplus_product. Se volete che il post type abbia un nome diverso, modificate il codice sopra.

Ora, quando visitate le pagine di admin di WordPress, vedrete il vostro post type nel menu:

The Product post type in the WordPress admin menu

Registrare la tassonomia

Il passo successivo è quello di registrare la tassonomia. Ancora una volta, create un'altra funzione nel vostro plugin:

La mia tassonomia viene chiamata tutsplus_product_tax. Ho deliberatamente incluso tax in modo che questa è la tassonomia e non il post type. Ho anche fatto la voce di menu più specifica così chiunque utilizzi questo plugin nell'admin di WordPress saprà quando sta lavorando con il post type e quando sta lavorando con la tassonomia.

Ecco l'admin di WordPress:

The list of products with taxonomy terms assigned in the WordPress admin

Potete vedere dallo screenshot che ho anche aggiunto alcuni prodotti fittizi.

Creare la Query

Ora la parte divertente . Abbiamo bisogno di scrivere una funzione che recupererà i termini della tassonomia nella nostra nuova tassonomia per un prodotto e poi produrrà una lista di articoli che hanno anche quel termine.

Per fare questo, useremo la funzione get_the_terms(). Poi creeremo un array vuoto di variabili e aggiungeremo l'abbreviazione di ciascuno dei termini recuperati in tale array. Possiamo quindi utilizzare tale array negli argomenti di WP_Query.

Iniziate aprendo una nuova funzione ed eseguendo un controllo per vedere se siamo sulla pagina di un'unico articolo del nostro custom post type. Se avete dato al vostro custom post type un nome diverso, o ne utilizzate uno registrato da un tema di terze parti, sarà necessario sostituire 'tutsplus_product' nel codice con il vostro post type.

Recuperare l'elenco dei termini e aggiungerli a un array

All'interno della funzione (e all'interno del controllo di trovarsi su una pagina del singolo prodotto), è ora necessario recuperare un elenco di termini di tassonomia per questo post.

Aggiungete questo:

Ora è necessario fare un ciclo completo di tutti i termini e aggiungerli a un array di variabili. Ma volete farlo solo se la precedente funzione ha restituito un elenco di termini, quindi avvolgetelo in un controllo che $productterms è popolato:

Questo recupera l'abbreviazione di ogni termine e l'aggiunge all'array $producttermnames.

Eseguire la Query

Ora abbiamo bisogno di impostare gli argomenti della query. Questo sarà all'interno del vostro controllo if( $productterms ), dal momento che non volete che questo si lanci se non ci sono tutti i termini. Aggiungete questo al vostro codice:

Qui, abbiamo utilizzato l'array $producttermnames all'interno degli argomenti tax_query. Questo recupererà tutti i post con i termini che dispone anche di questo prodotto.

Adesso eseguite una query utilizzando tali argomenti:

Questo produrrà un elemento h2 con un titolo e un elenco di link per ogni post. Se volete, potreste produrre questo in modo diverso: magari aggiungendo l'estratto o l'immagine di presentazione.

Evitare errori

Normalmente, non vi aspettereste che un utente aggiunga più di un termine della tassonomia per ogni prodotto, perché i termini sono ognuno relativo a un prodotto. Ma è impossibile dire con certezza che questo non accada mai. Ecco perché la funzione include questo array $producttermslist e lo utilizza per un'istanza di WP_Query, invece di eseguire WP_Query in un ciclo foreach. Inoltre produce una pagina più efficiente poiché sta solo eseguendo una query supplementare.

La funzione completa

Ecco la funzione integrale, con tutte le parentesi graffe nel posto giusto:

Eseguire la funzione

Proprio ora, questa funzione non farà nulla. Per lanciarla, è necessario eseguire una di queste tre cose:

  1. Agganciatela a un hook di azione esistente nel vostro tema.
  2. Aggiungete un hook di azione al vostro tema utilizzando do_action() e associatelo a quello.
  3. Aggiungete il nome della funzione nel posto del vostro tema dove volete che l'elenco si produca.

Per la seconda e la terza opzione, se state lavorando con un tema di terze parti, dovreste creare un tema child e modificarlo. Potreste creare un file template single-tutsplus_product.php e aggiungergli l'hook o la funzione o semplicemente aggiungerlo a single.php. Se lo avete collegato al file di template per il post type,  potreste rimuovere il controllo if ( is_singular( 'tutsplus_product' ) ).

Nel mio caso, sto usando il tema Suki dalla directory dei plugin di WordPress. Questo include questo hook nel file single.php:

L'hook è proprio sotto il contenuto, esattamente dove voglio che la mia lista sia prodotta. Così aggancerò la mia funzione all'hook di azione:

Una volta che avete fatto, salvate il vostro plugin e aggiungete alcuni prodotti e i termini della tassonomia.

Il risultato

Ho aggiunto il termine widget al mio prodotto Widget, ma ho anche aggiunto un altro termine per illustrarlo:

The products in the WordPress admin

Ho aggiunto questi due termini a un numero di post nel mio sito, e quando visualizzate la pagina del prodotto per un Widget, potete vedere la lista dei post correlati sotto, da entrambi i termini:

The repeated posts list on a product page

Questo elenco di post aiuterà i visitatori del sito ad accedere ai post del blog relativi a tale prodotto e li incoraggerà a saperne di più e (speriamo) ad acquistare.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.