Come personalizzare il titolo della pagina dei risultati di ricerca?

5 mag 2016, 13:21:56
Visualizzazioni: 27.5K
Voti: 3

Vorrei personalizzare il titolo della pagina dei risultati di ricerca:

da:

<title>Risultati della ricerca per "stringa di ricerca" – Pagina 2 – Nome sito</title>

a:

<title>"stringa di ricerca" pagina dei risultati – Pagina 2 – Nome sito</title>

Nel mio template search.php, get_header() è probabilmente quello che viene chiamato per generare il tag <title>.

Esiste un filtro che posso applicare per fare questa personalizzazione?

0
Tutte le risposte alla domanda 1
4

All'interno della funzione wp_get_document_title() abbiamo:

// Se è una ricerca, usa un titolo dinamico per i risultati.
} elseif ( is_search() ) {
        /* translators: %s: termine di ricerca */
        $title['title'] = sprintf( 
            __( 'Risultati della ricerca per &#8220;%s&#8221;' ), 
            get_search_query() 
        );

quindi puoi utilizzare il filtro document_title_parts per adattarlo alle tue esigenze.

Esempio:

/**
 * Modifica il titolo del documento per la pagina di ricerca
 */
add_filter( 'document_title_parts', function( $title )
{
    if ( is_search() ) 
        $title['title'] = sprintf( 
            esc_html__( 'Pagina dei risultati per &#8220;%s&#8221;', 'my-theme-domain' ), 
            get_search_query() 
        );

    return $title;
} );

Nota: Questo presuppone che il tuo tema supporti title-tag.

Aggiornamento:

Posso personalizzare anche la parte "Pagina 2" del titolo con lo stesso filtro?

Per quanto riguarda la parte relativa alla pagina, puoi modificarla in modo simile con:

/**
 * Modifica la parte della pagina nel titolo del documento per la pagina di ricerca
 */
add_filter( 'document_title_parts', function( $title ) use( &$page, &$paged )
{
    if ( is_search() && ( $paged >= 2 || $page >= 2 ) && ! is_404() ) 
        $title['page'] = sprintf( 
            esc_html__( 'Questa è la pagina %s', 'my-theme-domain' ), 
            max( $paged, $page ) 
        );

    return $title;
} );
5 mag 2016 14:05:50
Commenti

Funziona perfettamente. Una domanda, ho provato a cambiare il parametro domain con il mio 'slug del child theme', 'slug del parent theme' e anche a rimuovere il parametro, funzionano tutti. Quale sarebbe un esempio pratico di utilizzo del parametro domain? Grazie.

KDX KDX
5 mag 2016 15:51:24

Una domanda estesa a questa, invece di fare un'altra domanda. Posso anche personalizzare la parte Page 2 del titolo nello stesso filtro? Rendendolo This is 2 page, che potrebbe non avere senso in inglese semplice, ma lo sto personalizzando per una grammatica non inglese.

KDX KDX
5 mag 2016 15:56:13

Rispondo alla mia domanda estesa nel commento. Modificando l'istruzione return con la seguente farà il trucco: return preg_replace('/Page (\d+)/', 'This is $1 page', $title);

KDX KDX
5 mag 2016 16:21:26

Ho aggiunto un esempio per la parte della pagina. Ho incluso il dominio, poiché è probabile che le stringhe non siano disponibili nella traduzione di base, quindi spetta a te tradurle. @KDX

birgire birgire
6 mag 2016 00:22:29