Ricerca interna WordPress e linking strategico: far trovare i contenuti che Google non indicizza

Il search interno è una funzione di UX e di SEO che quasi nessuno ottimizza. Come configurare la ricerca WordPress con ElasticSearch o SearchWP, perché i risultati vuoti sono un problema, e come il linking interno contestuale aiuta Google a scoprire pagine che l'XML sitemap non basta a fargli trovare.
La ricerca interna di un sito è una delle funzioni più trascurate e più rivelatrici. Se guardi i log di ricerca del tuo sito (se li hai), scopri cosa cercano i tuoi visitatori e non trovano — ed è un dato che Google Analytics non ti dà. Un search interno ben configurato è UX: l'utente trova subito quello che cerca. Ma è anche SEO: ogni ricerca interna è una mappa dei contenuti che mancano, dei link che non funzionano, delle parole chiave che il tuo pubblico usa ma tu non hai ancora intercettato.
Il problema è che la ricerca nativa di WordPress è pessima. Usa LIKE nella query SQL del database, che è lento e imprecise — cerca 'scarpe' e non trova 'scarpa' (singolare), cerca 'scarpe da running' e non trova la pagina 'running' perché LIKE non capisce le parole. Su un sito con cento articoli non si nota. Su un e-commerce con diecimila prodotti, è un problema serio: i clienti cercano, non trovano, e se ne vanno.
Perché la ricerca nativa di WordPress non basta
La ricerca di default di WordPress (WP_Query con s) fa una cosa sola: cerca la stringa esatta nel titolo e nel contenuto. Niente stemming (le forme flesse), niente relevancy scoring (ordinamento per pertinenza), niente typo tolerance (gli errori di battitura). Per un blog piccolo è sufficiente. Per un e-commerce o un sito editoriale è un limite che costa conversioni. Le alternative sono due: SearchWP (un plugin che indicizza con un motore vero) o ElasticSearch (un server esterno). Entrambi trasformano la ricerca da una query SQL lenta a una query indicizzata veloce.
Se non puoi installare ElasticSearch, SearchWP è la via più semplice. Indicizza i contenuti in una tabella dedicata e usa un motore di ricerca che capisce lo stemming, i sinonimi e gli errori di battitura. La configurazione base:
// Con SearchWP attivo, personalizza i risultati di ricerca
add_filter( 'searchwp\query\results', function( $results, $query ) {
// Escludi i bozze e i contenuti privati dai risultati
return array_filter( $results, function( $result ) {
$post = get_post( $result->get_id() );
return 'publish' === $post->post_status;
} );
}, 10, 2 );
// Aggiungi i sinonimi per la ricerca interna
add_filter( 'searchwp\synonyms', function( $synonyms ) {
return array_merge( $synonyms, array(
'scarpe' => array( 'calzature', 'footwear' ),
'hosting' => array( 'server', 'infrastruttura', 'cloud' ),
'wordpress' => array( 'wp', 'cms' ),
) );
} );I risultati vuoti sono un problema (e come risolverli)
Quando un utente cerca qualcosa e non trova nulla, WordPress restituisce una pagina vuota. È un'esperienza pessima — l'utente se ne va. Ma è anche un dato: cosa cercano e non trovano è esattamente il contenuto che manca. Il primo passo è loggare le ricerche con zero risultati:
// Logga le ricerche con zero risultati per analisi
add_action( 'template_redirect', function() {
if ( is_search() && ! have_posts() ) {
$search_query = get_search_query();
$log_line = sprintf(
'[%s] ZERO RESULTS: "%s" referrer=%s url=%s',
current_time( 'mysql' ),
$search_query,
wp_get_referer() ?? 'direct',
$_SERVER['REQUEST_URI'] ?? ''
);
file_put_contents(
WP_CONTENT_DIR . '/../logs/search-empty.log',
$log_line . "\n",
FILE_APPEND
);
}
} );Linking interno: la SEO che non costa nulla
Il linking interno è la SEO più sottovalutata. Ogni link da un articolo a un altro articolo del tuo sito è un segnale di pertinenza che Google usa per capire la struttura dei contenuti e per scoprire pagone che l'XML sitemap non basta a fargli trovare. Un articolo pubblicato due anni fa con un link interno da un articolo recente torna sotto gli occhi di Google — è un boost gratuito che la maggior parte dei siti non sfrutta.
Il modo più efficace è automatizzare i link contestuali nel contenuto. Invece di linkare manualmente ogni volta che menzioni un argomento, puoi creare uno script che suggerisce link interni basati sulle parole chiave degli articoli esistenti:
// Suggerisci link interni automatici nel contenuto degli articoli
add_filter( 'the_content', function( $content ) {
if ( ! is_singular( 'post' ) ) {
return $content;
}
// Mappa di parole chiave → URL di articoli correlati
$internal_links = array(
'backup realtime' => '/magazine/backup-realtime-disaster-recovery',
'core web vitals' => '/magazine/cls-layout-shift-mobile',
'wp-cron' => '/magazine/wp-cron-automazioni-wordpress',
'firewall waf' => '/magazine/waf-firewall-applicativo-wordpress',
);
foreach ( $internal_links as $keyword => $url ) {
// Trova la prima occorrenza (case-insensitive, solo nel testo)
$pattern = '/\b(' . preg_quote( $keyword, '/' ) . ')\b/i';
if ( preg_match( $pattern, $content, $matches, PREG_OFFSET_CAPTURE ) ) {
$link = '<a href="' . esc_url( $url ) . '">' . $matches[0][0] . '</a>';
// Sostituisci solo la prima occorrenza
$content = substr_replace( $content, $link, $matches[0][1], strlen( $matches[0][0] ) );
}
}
return $content;
} );Misurare se la ricerca interna funziona
Una ricerca interna che funziona ha due metriche: bassa percentuale di ricerche con zero risultati (sotto il 10%) e alto click-through dai risultati di ricerca (l'utente clicca un risultato invece di rifare la ricerca). Se il tuo sito ha il 30% di ricerche vuote, il problema non è la ricerca — è il contenuto. Manca qualcosa che i tuoi visitatori cercano. E Google lo sa: se i visitatori cercano e non trovano, Google interpreta il segnale come 'questo sito non ha quello che cerchi' e abbassa il posizionamento.
La ricerca interna e il linking sono i due interventi SEO più sottovalutati. Non sono glamour come i Core Web Vitals, ma sono quelli che fanno la differenza tra un sito dove i contenuti si trovano e uno dove restano nascosti. E su WordPress, dove ogni contenuto è potenzialmente un nodo di una rete, non sfruttarli è sprecare l'infrastruttura stessa del CMS.
Codice pulito, prestazioni e dipendenze ridotte al minimo.
Sviluppo WordPress personalizzato: temi leggeri, plugin su misura e integrazioni API senza appesantire il sito.
Articoli correlati

Child theme WordPress: perché modificare il tema padre è l'errore più costoso
Leggi
REST API WordPress: creare endpoint custom senza appesantire il core
Leggi
