私のテーマはtitle-tag add_theme_support('title-tag')
をサポートしていますが、Homeページの<title>
からwordpressの説明bloginfo('description')
を削除することはできません。
私はこのフィルタを使用しても成功しませんでした。
add_filter( 'wp_title', function ( $title, $sep ) {
global $paged, $page;
$title .= get_bloginfo( 'name' );
if ( is_home() || is_front_page() )
$title = "$title";
return $title;
}, 10, 2 );
解決策が見つかりました:
add_filter( 'pre_get_document_title', function ( $title ) {
if(is_front_page()){
$title = get_bloginfo();
}
return $title;
});
wp_get_document_title()
には興味深いフィルタがいくつかあります - pre_get_document_title
および document_title_parts
。
/**
* Filter the parts of the document title.
*
* @since 4.4.0
*
* @param array $title {
* The document title parts.
*
* @type string $title Title of the viewed page.
* @type string $page Optional. Page number if paginated.
* @type string $tagline Optional. Site description when on home page.
* @type string $site Optional. Site title when not on home page.
* }
*/
add_filter( 'document_title_parts', function ( $title ) {
if ( is_home() || is_front_page() )
unset($title['tagline']);
return $title;
}, 10, 1 );
これを振り返って。 pre_get_document_title
フィルターはかなり興味深いものです。タイトルを処理する前に、このフィルタを実行します。結果が空ではない場合(これは予期されていませんでした)、プロセスは短絡されています。
$title = apply_filters( 'pre_get_document_title', '' );
if ( ! empty( $title ) ) {
return $title;
}
つまり、タイトルを定義しても、それ以外のことを心配する必要はありません。いいことは、あなたがルールに例外を加えることができるということです。それであなたの最初の質問に答えるために:
add_filter( 'pre_get_document_title', function( $title ) {
if ( is_home() || is_front_page() ) {
// Return blog title on front page
$title = get_bloginfo( 'name' );
}
return $title;
} );
問題はその行です。
$title = "$title";
実際には$title
をそれ自身に変更するだけです。に変更した場合
$title = get_bloginfo( 'name' );
フロントページに返されたタイトルはあなたのブログの名前になるでしょう。そこに任意の文字列を入れることができます。また、ここでグローバルを呼び出す必要はありません。
これはうまくいくはずのコードです。
add_filter( 'wp_title', function ( $title, $sep ) {
$title .= get_bloginfo( 'name' );
if ( is_home() || is_front_page() )
$title = "Any string you want to have";
return $title;
}, 10, 2 );