web-dev-qa-db-ja.com

検索結果ページのタイトルをカスタマイズする方法

検索結果ページのページタイトルをカスタマイズしたいです。

から:

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

に:

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

私のsearch.phpテンプレートでは、get_header()はおそらく<title>タグを生成するために呼び出されているものです。

このカスタマイズをするために私がそれに適用できるフィルタがありますか?

2
KDX

wp_get_document_title()関数内には、次のものがあります。

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

それであなたはそれをあなたの好みに合わせるためにdocument_title_partsフィルタにフックすることができます。

例:

/**
 * 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;
} );

注: これはあなたのテーマがtitle-tagをサポートしていることを前提としています。

更新:

同じフィルタでタイトルの一部もカスタマイズできますか?

page 部分に関しては、以下のようにしてそれを調整することができます。

/**
 * 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