web-dev-qa-db-ja.com

ホームの<タイトル>から説明を削除

私のテーマは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 );
5
marcelo2605

解決策が見つかりました:

add_filter( 'pre_get_document_title', function ( $title ) {
    if(is_front_page()){
        $title = get_bloginfo();
    }
    return $title;
});
1
marcelo2605

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;

} );
8
jgraup

問題はその行です。

$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 );
1
fischi