web-dev-qa-db-fra.com

Impossible d'obtenir le filtre wp_title fonctionnant dans le thème des vingt-seize enfants

Je ne parviens pas à remplacer le titre défini dans le panneau d'administration d'une page de modèle personnalisée et à générer une balise <title> personnalisée.

Le thème parent est la vingt-huitième année de WordPress, qui utilise la fonction de thème title-tag (contrairement à la fonction bientôt obsolète wp_title ()). Selon Référence du code WordPress , le raccordement correct est le filtre wp_title:

Le filtre wp_title est utilisé pour filtrer le titre de la page (appelé avec wp_title ()). Ceci filtre le texte apparaissant dans la balise HTML (parfois appelée "balise de titre" ou "méta titre"), pas le titre de l'article, de la page ou de la catégorie.

Je devrais donc pouvoir créer simplement un test conditionnel dans mon fichier functions.php et remplacer la balise de titre créée par WordPress, par exemple:

    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 );

Dérivé de Exemple du Codex .

Autant que je sache, ce filtre personnalisé ne fonctionne nulle part, le titre défini dans le back-end apparaît dans la balise de titre de l'en-tête HTML. J'ai élevé la priorité à 99999, toujours rien. Qu'est-ce que je fais mal?

1
Bob Diego

Si quelqu'un d'autre a des problèmes avec cela, cela peut être dû au plugin Yoast. Utilisation:

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

Nous avons trouvé ceci pour la prise en charge du shortcode dans les titres (en-tête et titre de l'article):

//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;
}

Je l'ai appelé wp44 car dans /wp-includes/general-template.php, il est indiqué que cela a été ajouté dans la section 4.4 pour "Filtrer le titre du document avant qu'il ne soit généré."

Je pense que le filtre standard wp_title devrait fonctionner, mais je sais que nous utilisons un thème fou qui a sa propre fonction et qui ressemble à ce thème. Au moins, document_title_parts est la voie à suivre.

1
Andrew T