Salta al contenuto principale
Sistemi Attivi
WP Planet — WordPress Cloud & Managed Services
Torna al MagazineSviluppo

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

28 Ott 2026 — 12:45 8 min di lettura
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:

wp-config.php
// 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' ),
    ) );
} );
Nota: SearchWP indicizza i contenuti in background. Dopo l'installazione o dopo aver aggiunto contenuti nuovi, l'indice va ricostruito. Su siti grandi, la prima indicizzazione può richiedere minuti o ore — schedulala in orari a basso traffico.

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:

wp-config.php
// 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
        );
    }
} );
Nota: Il log delle ricerche vuote è oro per la strategia editoriale e SEO. Se dieci persone al mese cercano 'backup realtime' e non trovi una pagina con quel titolo, è il segnale che devi scrivere quel contenuto. Analizza il log mensilmente e crea contenuti per le ricerche più frequenti.

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:

wp-config.php
// 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;
} );
Nota: Questo snippet linka solo la prima occorrenza di ogni parola chiave — evita di saturare il contenuto di link. Limita a 3-5 link interni per articolo. Se usi un plugin SEO come Yoast o Rank Math, hanno funzioni di linking interno che puoi configurare invece di scrivere codice.

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.

Sviluppo WordPress

Codice pulito, prestazioni e dipendenze ridotte al minimo.

Sviluppo WordPress personalizzato: temi leggeri, plugin su misura e integrazioni API senza appesantire il sito.

Sviluppo WordPress
Condividi