Cum să personalizezi titlul paginii de rezultate ale căutării?

5 mai 2016, 13:21:56
Vizualizări: 27.5K
Voturi: 3

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?

0
Toate răspunsurile la întrebare 1
4

Î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 &#8220;%s&#8221;' ), 
            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 &#8220;%s&#8221;', '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;
} );
5 mai 2016 14:05:50
Comentarii

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.

KDX KDX
5 mai 2016 15:51:24

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ă.

KDX KDX
5 mai 2016 15:56:13

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

KDX KDX
5 mai 2016 16:21:26

Am adăugat un exemplu pentru partea de pagină. Am adăugat domeniul, deoarece este posibil ca șirurile să nu fie disponibile în traducerea de bază, așa că depinde de tine să le traduci. @KDX

birgire birgire
6 mai 2016 00:22:29