Post che linkano qui in Wordpress
Uno snippet PHP per mostrare la lista degli "articoli che linkano a questo" in un blog WordPress
Gestendo un blog come giardino punk con molti contenuti legati tra loro, mi è capitato diverse volte di chiedermi: quali sono gli articoli che menzionano questo? È una funzione che WordPress non offre nativamente, e non ho trovato valide risposte online, quindi ho sviluppato un piccolo snippet PHP che permette di aggiungerla a qualsiasi post o pagina. Con questo mostrerai al pubblico l’elenco degli articoli che linkano a quello che si sta visualizzando.
Lo snippet
<?php
// Paste this code in your template or use a plugin like WPCode Lite to embed the php in your posts/pages.
$the_query = new WP_Query(
array(
's' => get_the_permalink(), // Current post/page
'post_type' => 'post', // Type: post, page or curtom (remove for all)
"posts_per_page" => "-1", // Numer of results (-1 for all)
"order" => "ASC" // Order: ASC/DES
)
);
if ( !$the_query->have_posts() ) {
return;
}
else{ ?>
<div class="related">
<h3>Linking here:</h3>
<ul>
<?php
while ( $the_query->have_posts() ) { // loop through the posts/pages
$the_query->the_post();
$id = get_the_ID(); // get post ID
$title = esc_html( get_the_title() ); // get post title
$url = get_the_permalink(); // get url
$year = get_the_date( "Y" ); // get date
$post_type = get_post_type(); // get post type (post, page, custon...)
$categories = get_the_category(); // get post categories
$tags = get_the_tags(); // get post tags
$suctom_term = get_the_terms($id, 'custom-term-name'); // for whatever custom terms you use
if ( has_post_thumbnail( $id) ) { // get the thumbnail
$thumb = get_the_post_thumbnail( $rid, 'full',
array( "class" => "related-post-img")
);
} else {
$thumb = null;
}
echo '<li><a href="' . $url . '">' . $thumb . $title . $year . '</a><br>';
echo 'Categories:';
foreach($category as $categories) echo $category;
echo '<br>Tags:';
foreach($tag as $tags) echo $tag;
echo '</li>';
}?>
</ul>
</div> <!-- related div -->
<?php } ?>
Come funziona
Lo snippet:
- Prende l’URL (permalink) dell’articolo o della pagina che si sta visualizzando.
- Esegue una WP_Query cercando l’URL in tutti i contenuti.
- Per ogni risultato trovato, stampa un elenco puntato con titolo, link, anno di pubblicazione, immagine in evidenza (se presente), categorie e tag.
- Se non trova nessun articolo che linka alla pagina corrente, non stampa nulla.
Il risultato è un blocco “Linking here” (articoli in entrata) che puoi inserire in fondo ai post, simile a una sezione di “articoli correlati”, ma basata su link interni e non su categorie e tag.
Limiti: la ricerca si basa sulla funzione di ricerca nativa di WordPress applicata al contenuto testuale, quindi lo snippet trova solo i link inseriti come testo/HTML nel post_content. I link generati dinamicamente da blocchi, shortcode o widget potrebbero non vengono rilevati.
Come installarlo in WordPress
Il modo più semplice è installare un plugin che permette di eseguire snippet PHP personalizzati, come WPCode Lite (che è gratuito e disponibile nella repository dei plugin WordPress).
-
Installa WPCode Lite.
-
Crea un nuovo snippet, scegli Aggiungi il tuo codice personalizzato (New Custom Snippet).
-
Dai un nome allo snippet, seleziona come tipo di codice PHP Snippet. Copia il codice PHP qui sopra e incollalo nell’editor.
-
Imposta dove deve essere eseguito. Nella sezione Insertion puoi scegliere scegli Inserimento automatico, e come posizione seleziona ad esempio Dopo il contenuto (After Content), così l’elenco degli articoli in entrata comparirà automaticamente in fondo a ogni post. In alternativa, puoi decidere manualmente in quali post o pagine mostrarlo, WPCode genera uno shortcode da incollare nell’articolo o in un blocco del template.
-
Attiva e salva. Visita un post che ha link in entrata da altri per verificare che la lista venga mostrata correttamente.
Personalizzazioni utili
Lo snippet accetta alcuni parametri facilmente modificabili direttamente nell’array della WP_Query:
post_type: limita la ricerca a un solo tipo di contenuto (es. post o page); rimuovi il parametro per cercare in tutti i tipi.posts_per_page: numero massimo di risultati mostrati (-1 per mostrarli tutti).order: ordine cronologico crescente (ASC) o decrescente (DESC).