web-dev-qa-db-fra.com

Changer le titre uniquement dans la page dynamique

J'ai essayé de changer le titre dans une page dynamique sans aucune chance.

Ce que j'ai fait, c'est créer deux modèles de page à partir desquels je charge des éléments (occasions) à partir d'une base de données externe. Dans un modèle de page, je charge l'occasion d'une page:

<?php include 'Occasions-files/single.php';?>

Et le deuxième modèle de page, je charge un aperçu des occasions:

<?php include 'Occasions-files/file.php';?>

Maintenant, le titre est celui par défaut du plugin SEO. J'ai essayé le référencement tout-en-un ainsi que le référencement Yoast mais je n'arrive pas à écraser le titre. Ce que je veux, c'est changer le titre de single.php dans le nom de l'occasion mais laisser toutes les autres pages au plugin SEO.

Je ne suis pas assez expérimenté avec cela et je ne sais pas par où commencer. À des fins de test, j'ai essayé de mettre test manuellement avant get_header, puis le titre ajouté manuellement est affiché, mais mon en-tête est foiré. Quand je mets le titre après le get_header, il charge l'en-tête ok mais le titre n'est pas affiché et reste par défaut

<title>test</title>
<?php get_header(); ?>

En outre, j'ai essayé d'ajouter un filtre (au functions.php) mais c'était aussi sans résultat ou peut-être que je n'ai aucune idée sur la façon de l'insérer ..?

function custom_title_function($custom_title) {
$custom_title['title'] = "Test Title";
return $custom_title; }
add_filter( 'document_title_parts', 'custom_title_function' );

Quelqu'un a une idée sur la façon de résoudre ce problème? Merci beaucoup à l'avance!

1
Ptrckk

Juste pour être sûr, est-ce que la balise title dans votre zone <head> (probablement dans header.php) ressemble à ceci?

<title><?php wp_title(); ?></title>

Il doit en être ainsi pour que Yoast puisse travailler avec et pouvoir outrepasser les titres.

Quoi qu'il en soit, si vous ajoutez ceci à votre single.php (ou au moins avant que get_header() ne soit exécuté pour cette page), vous devriez pouvoir modifier le titre de la page:

function custom_page_title( $title ){
    $return = $title;

    // You can check what the current post is via $wp_query->post
    global $wp_query;
    if( isset($wp_query->post) ){
        $id = $wp_query->post->ID;
        $post_title = $wp_query->post->post_title;
        // etc

        $return = $post_title;
    }

    // Or just outright change the title
    $return = 'test';

    return $return;
}
add_filter('wp_title', 'custom_page_title', 20);

Une autre chose à noter ici est que si vous utilisez Yoast, vous devez vous assurer que cette fonction est activée après que Yoast ait modifié le titre, sinon Yoast écrasera toutes les modifications que vous apporterez. C'est ici que le 20 entre en tant que troisième paramètre de add_filter(). Je pense que Yoast utilise son filtre à 15, alors si vous utilisez le vôtre à 20 (ou tout nombre supérieur à 15), vous vous assurerez que votre filtre fonctionne après le filtre de Yoast.

1
James