web-dev-qa-db-de.com

Entfernen Sie die Beschreibung von <title> auf der Startseite

Mein Theme unterstützt das Title-Tag add_theme_support('title-tag'), aber ich kann die WordPress-Beschreibung bloginfo('description') nicht von <title> auf der Startseite entfernen.

Ich versuche, diesen Filter ohne Erfolg zu verwenden:

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

Eine Lösung gefunden:

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

wp_get_document_title() hat einige interessante Filter - pre_get_document_title und 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 );

Rückblickend; Der pre_get_document_title Filter ist ziemlich interessant. Bevor der Titel verarbeitet wird, wird dieser Filter ausgeführt. Wenn das Ergebnis nicht leer ist (was nicht erwartet wurde), wird der Prozess kurzgeschlossen.

$title = apply_filters( 'pre_get_document_title', '' );
if ( ! empty( $title ) ) {
    return $title;
}

Das heißt, wenn Sie den Titel definiert haben, muss er sich um nichts anderes kümmern. Das Schöne ist, dass Sie Ausnahmen von der Regel machen können. So beantworten Sie Ihre ursprüngliche Frage:

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

Das Problem ist die Linie:

$title = "$title";

Sie ändern einfach den $title in sich. Wenn Sie es ändern, um

$title = get_bloginfo( 'name' );

der zurückgegebene Titel auf der Startseite ist der Name Ihres Blogs. Sie können dort eine beliebige Zeichenfolge einfügen. Es ist auch nicht notwendig, die Globals hier anzurufen.

Hier ist ein Code, der funktionieren sollte:

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