Come personalizzare il titolo della pagina dei risultati di ricerca?
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?

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 “%s”' ),
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 “%s”', '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;
} );

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.

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.

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);
