web-dev-qa-db-de.com

Der Filter "wp_title" funktioniert in einem untergeordneten Thema nicht

Ich habe Probleme, den im Admin-Bereich festgelegten Titel für eine benutzerdefinierte Vorlagenseite zu überschreiben und ein benutzerdefiniertes <title> -Tag auszugeben.

Das übergeordnete Thema ist WordPress 's Stock Twentysixteen, das die Funktion title-tag theme verwendet (im Gegensatz zur bald veralteten Funktion wp_title ()). Laut WordPress Code Reference ist der wp_title-Filter der richtige Haken:

Der Filter wp_title dient zum Filtern des Titels der Seite (mit wp_title () aufgerufen). Dies filtert den Text, der im HTML-Tag (manchmal als „Titel-Tag“ oder „Meta-Titel“ bezeichnet) angezeigt wird, nicht den Post-, Seiten- oder Kategorietitel.

So sollte es mir möglich sein, einfach einen bedingten Test in meiner functions.php-Datei zu erstellen und das von WordPress dort erstellte Title-Tag zu überschreiben, z.

    function custom_filter_wp_title( $title, $sep ) {

        // removed conditional to prove not working anywhere
        // if ( is_page_template( 'sometemplate.php' ) ) {
            $title = "My custom template page...";
        // } 
        return $title;

    }
    add_filter( 'wp_title', 'custom_filter_wp_title', 10, 2 );

Abgeleitet von Codex-Beispiel .

Soweit ich das beurteilen kann, funktioniert dieser benutzerdefinierte Filter nirgendwo. Der im Back-End festgelegte Titel wird im Title-Tag des HTML-Headers angezeigt. Ich habe die Priorität auf 99999 erhöht, immer noch nichts. Was mache ich falsch?

1
Bob Diego

Wenn jemand Probleme damit hat, kann dies am Yoast-Plugin liegen. Benutzen:

add_filter( 'pre_get_document_title', function( $title ){
    // Make any changes here
    return $title;
}, 999, 1 );
1
Erin

Wir haben dies für die Shortcode-Unterstützung in Titeln (sowohl Header- als auch Post-Titel) gefunden:

//shortcode support in titles
add_filter( 'the_title', 'do_shortcode' );      //should be post title
add_filter( 'wp_title', 'do_shortcode' );       //should be HTML/Browser title
add_filter( 'document_title_parts', 'wp44_header_title_function' );   //own function for HTML/Browser title
function wp44_header_title_function($title) {
    if (isset($title['title'])) $title['title'] = do_shortcode($title['title']);
    if (isset($title['page'])) $title['page'] = do_shortcode($title['page']);
    if (isset($title['tagline'])) $title['tagline'] = do_shortcode($title['tagline']);
    if (isset($title['site'])) $title['site'] = do_shortcode($title['site']);
    return $title;
}

Ich habe es wp44 genannt, weil in /wp-includes/general-template.php angegeben ist, dass dies in 4.4 hinzugefügt wurde, um den Dokumenttitel zu filtern, bevor er generiert wird.

Ich denke, der Standard-wp_title-Filter sollte funktionieren, aber ich weiß, dass wir ein verrücktes Thema verwenden, das sein eigenes Ding macht und so aussieht, als ob für dieses Thema zumindest document_title_parts der richtige Weg ist.

1
Andrew T