Cum să personalizezi titlul paginii de rezultate ale căutării?
Aș dori să personalizez titlul paginii de rezultate ale căutării:
de la:
<title>Rezultate pentru "text căutat" – Pagina 2 – Nume Site</title>
la:
<title>"text căutat" pagina rezultate – Pagina 2 – Nume Site</title>
În șablonul meu search.php, get_header()
este probabil cel care generează eticheta <title>
.
Există vreun filtru pe care îl pot aplica pentru a face această personalizare?

În funcția wp_get_document_title()
avem:
// Dacă este o căutare, folosește un titlu dinamic pentru rezultatele căutării.
} elseif ( is_search() ) {
/* translators: %s: termenul căutat */
$title['title'] = sprintf(
__( 'Rezultatele căutării pentru “%s”' ),
get_search_query()
);
astfel încât poți folosi filtrul document_title_parts
pentru a-l ajusta după nevoile tale.
Exemplu:
/**
* Modifică titlul documentului pentru pagina de căutare
*/
add_filter( 'document_title_parts', function( $title )
{
if ( is_search() )
$title['title'] = sprintf(
esc_html__( 'Pagina de rezultate pentru “%s”', 'my-theme-domain' ),
get_search_query()
);
return $title;
} );
Notă: Acest lucru presupune că tema ta suportă title-tag
.
Actualizare:
Pot personaliza și partea de "Pagina 2" din titlu folosind același filtru?
Referitor la partea de pagină, o poți ajusta într-un mod similar cu:
/**
* Modifică partea de pagină a titlului documentului pentru pagina de căutare
*/
add_filter( 'document_title_parts', function( $title ) use( &$page, &$paged )
{
if ( is_search() && ( $paged >= 2 || $page >= 2 ) && ! is_404() )
$title['page'] = sprintf(
esc_html__( 'Aceasta este pagina %s', 'my-theme-domain' ),
max( $paged, $page )
);
return $title;
} );

Funcționează perfect. Am o întrebare, am încercat să schimb parametrul domain în 'child theme slug', 'parent theme slug', și chiar să elimin parametrul, toate funcționează. Care ar fi un exemplu practic de utilizare a parametrului domain? Mulțumesc.

O întrebare adițională legată de asta, în loc să pun altă întrebare. Pot să personalizez și partea Page 2
din titlu folosind același filtru? Făcând-o să arate This is 2 page
, care poate nu are sens în engleză standard, dar o customizez pentru o gramatică non-engleză.

Răspund singur la întrebarea adițională din comentariu. Modificând instrucțiunea return
în următorul mod va rezolva problema:
return preg_replace('/Page (\d+)/', 'This is $1 page', $title);
