web-dev-qa-db-fra.com

Comment personnaliser le titre de la page de résultats de recherche?

J'aimerais personnaliser le titre de la page de résultats de recherche:

de:

<title>Search Results for “search string” – Page 2 – Sitename</title>

à:

<title>“search string” result page – Page 2 – Sitename</title>

Dans mon modèle search.php, get_header() est probablement celui appelé pour générer la balise <title>.

Existe-t-il un filtre que je peux lui appliquer pour effectuer cette personnalisation?

2
KDX

Dans la fonction wp_get_document_title(), nous avons:

// If it's a search, use a dynamic search results title.
} elseif ( is_search() ) {
        /* translators: %s: search phrase */
        $title['title'] = sprintf( 
            __( 'Search Results for &#8220;%s&#8221;' ), 
            get_search_query() 
        );

vous pouvez donc vous connecter au filtre document_title_parts pour l’ajuster à vos besoins.

Exemple:

/**
 * Modify the document title for the search page
 */
add_filter( 'document_title_parts', function( $title )
{
    if ( is_search() ) 
        $title['title'] = sprintf( 
            esc_html__( '&#8220;%s&#8221; result page', 'my-theme-domain' ), 
            get_search_query() 
        );

    return $title;
} );

Remarque: Cela suppose que votre thème prend en charge title-tag.

Mettre à jour:

Puis-je également personnaliser la partie du titre dans le même filtre?

En ce qui concerne la partie page , vous pouvez l’ajuster de la même manière avec:

/**
 * Modify the page part of the document title for the search page
 */
add_filter( 'document_title_parts', function( $title ) use( &$page, &$paged )
{
    if ( is_search() && ( $paged >= 2 || $page >= 2 ) && ! is_404() ) 
        $title['page'] = sprintf( 
            esc_html__( 'This is %s page', 'my-theme-domain' ), 
            max( $paged, $page ) 
        );

    return $title;
} );
3
birgire