Coding | Hooks und Filter | WordPress

WordPress: Ablöse für den wp_title Filter

air force 81173 1280

Mit WordPress 4.1 kam der Theme Support für Title-Tags, add_theme_support( ‘title-tag’ );. Es definiert das Metatag <title>im Head von Seiten und jenen Titel den Suchmaschinen lesen und der in der Titelleiste von Browsern oder in Tabs angezeigt wird. Üblicherweise sind Überschrift und Titel eines Beitrags identisch (betroffen sind nicht nur Beiträge, darauf beschränke ich mich lediglich im Beispiel). Wer aber beispielsweise gerne lange Überschriften verwendet, möchte Suchmaschinen vielleicht eine gekürzte und optimierte Fassung anbieten.

WordPress 4.4 ersetzte die Funktion wp_title() mit wp_get_document_title() und löste damit den Filter wp_title (String) durch document_title_parts (array) ab.

Um beispielsweise einen alternativen Titel für Suchmaschinen in Beiträgen über ein Customfield zu erhalten, gab man diesen früher über den Filter wp_title() aus:

 function pptf_alternative_title( $title ) {
    if ( is_singular() ) {
        global $post; 
        if ( !get_post_meta( $post->ID, 'seo_title', true ) ) return $title;
        else return get_post_meta( $post->ID, 'seo_title', true ) . '|' . get_bloginfo('name');
    }
    return $title;
}
add_filter( 'wp_title', 'pptf_alternative_title' );

Und so muss es heute aussehen:

function pptf_alternative_title( $title ) {
    if ( is_singular() ) {
        global $post; 
        if ( !get_post_meta( $post->ID, 'seo_title', true ) ) return $title;
        else {
            $title = array(); // andernfalls würde der bestehende Titel ergänzt, nicht ersetzt
            $title[] = get_post_meta( $post->ID, 'seo_title', true );
            $title[] = get_bloginfo('name');
            return $title;        }
    }
    return $title;
}
add_filter( 'document_title_parts', 'pptf_alternative_title' );

Der signifikante Unterschied ist, dass sich die Teile des Titels nun aus einem Array zusammensetzen.

Über den Filter document_title_separtator kann das Standardtrennzeichen »-« durch ein anderes Zeichen ersetzt werden.

function pptf_title_parts_seperator( $sep ) {
    return '|';
}
add_filter( 'document_title_separator', 'pptf_title_parts_seperator' );

weiter schmökern

Schreibe einen Kommentar

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden.

Deine E-Mail-Adresse wird nicht veröffentlicht.