the_title() me renvoie le titre du dernier article et non le titre du blog (Créer un compte)

  • WordPress :4.8
  • Statut : non résolu
14 sujets de 1 à 14 (sur un total de 14)
  • Auteur
    Messages
  • #1932582
    strabsquad
    Participant
    Initié WordPress
    8 contributions

    Bonjour,

    Ma configuration WP actuelle

    Problème(s) rencontré(s) :

    Bonjour je rencontre un problème vraiment très étrange…

    J’ai donc ma page blog, une page crée et réglée sur pages des articles dans les options wordpress mais je ne parviens pas à afficher son titre. L’utilisation du simple <?php the_title(); ?> me renvoie bien un titre, mais c’est le titre du dernier article qui est renvoyé. C’est à n’y rien comprendre…

    Quelqu’un a déjà eu un problème similaire ?

    Fichiers joints :
    Vous devez être connecté pour voir les fichiers joints.
    #1932597
    JeanSeb – Long Watch Studio
    Participant
    Initié WordPress
    32 contributions

    Bonjour strabsquad,

    Attention à ne pas mélanger « the_title » et « get_the_title ».

    the_title() : https://codex.wordpress.org/Function_Reference/the_title

    get_the_title() : https://developer.wordpress.org/reference/functions/get_the_title/

    #1932599
    strabsquad
    Participant
    Initié WordPress
    8 contributions

    Merci de ta réactivité.

    Dans mon cas, peu importe le résultat est globalement le même, y compris si j’affiche un <?php echo get_the_title(); ?>

    J’ai remarqué également autre chose, si je demande l’affichage de l’ID de la page avec un get_the_ID() j’obtiens l’ID du dernier article de la boucle. j’ai comme une énorme anomalie au niveau de ma boucle j’ai l’impression. WordPress estime que ma page blog = mon dernier article.

    <?php if (have_posts()): while (have_posts()) : the_post(); ?>

    <div class="four columns">

    <article style="background-image:url('<?php the_post_thumbnail_url();?>')">
    <div class="actus-title">
    <a href="<?php echo get_permalink( $post->ID ); ?>"><?php the_title(); ?></a>
    <span class="date"><?php the_time('d/m/Y'); ?></span>
    </div>
    </article>

    </div>

    <?php endwhile; ?>

    <?php else: ?>

    <!-- article -->
    <article>
    <h2><?php _e( 'Sorry, nothing to display.', 'html5blank' ); ?></h2>
    </article>
    <!-- /article -->

    <?php endif; ?>
    loop.php

    #1932613
    JeanSeb – Long Watch Studio
    Participant
    Initié WordPress
    32 contributions

    Là, le code que tu me montres est le code de chaque article. the_title() doit donc fonctionner et afficher le titre pour chaque article.

    Sur l’image, tu indiques un titre général, celui du blog, ce qui n’est pas la même chose. Là on parle plutôt de « header » que de « the_title ».

    #1933042
    Flobogo
    Modérateur
    Maître WordPress
    20159 contributions

    Bonjour,

    C’est en effet assez curieux, alors que sur vos articles affichés individuellement, on voit bien le titre « nos actualités ».

    Du coup, « nos actualités », c’est quoi ? –> une catégorie ? Ça expliquerait la confusion, si c’est à la fois une catégorie et un page qui contient le blog.

    Et montrez-nous le code du fichier complet, pas juste la loop qui affiche les articles, ce n’est pas le problème.

    #1933608
    strabsquad
    Participant
    Initié WordPress
    8 contributions

    Oui bien sûr je vous montre le header tout de suite.

    			<?php 
    if (!is_page_template('page-home.php')) :
    ?>

    <div class="header_wrap">
    <?php
    $parent_title = get_the_title($post->post_parent);
    if (!is_singular('post')) {
    echo '<h1>'.$parent_title .'</h1>';
    }
    else {
    echo '<h1>Nos actualités</h1>';
    }
    ?>
    </div>

    <?php
    endif;
    ?>

    Le site est composé de pages dans lesquelles je dois afficher le titre de la page parente et de la rubrique actualités où il me faudrait afficher ce fameux Nos actualités.

    Du coup, « nos actualités », c’est quoi ? –> une catégorie ? Ça expliquerait la confusion, si c’est à la fois une catégorie et un page qui contient le blog.
    Nos actualités est une page défini sur page des articles via les réglages wordpress. Il n’existe pas de catégorie à ce nom, aujourd’hui tous les articles sont catégorisés dans Non classé.

    #1934357
    Flobogo
    Modérateur
    Maître WordPress
    20159 contributions

    Et quel est le header associé à vos autres pages, comme « remboursement de la sécu –> zomm sur le dentaire » ?

    Le modèle utilisé pour ces pages semble fonctionner.

    Ah, mais ce sont des pages, alors que sur « nos actualités », ce sont des articles ! Donc, il ne peut pas y avoir de page-parente …

    À mon avis, c’est de ce côté là qu’il faut creuser 🤔

    #1934669
    strabsquad
    Participant
    Initié WordPress
    8 contributions

    Bin c’est le même header. En fait via mon code je demande d’afficher le titre de la page parente si la page en question est tout sauf un article avec :

    if (!is_singular('post'))

    Si l’opération n’entre pas dans cette condition, alors le titre à afficher doit être Nos actualités, ce qui fonctionne très bien sur un article du coup mais absolument pas sur la page des articles…

    #1937640
    Flobogo
    Modérateur
    Maître WordPress
    20159 contributions

    Oui, mais dans votre code en ligne 9, vous demandez d’afficher le titre de la page-parent d’un article : ça n’existe pas ! La page-parent d’une page, oui, la page-parent d’un article, non.

    Ça fonctionne « très bien » sur les articles seuls, parce que là, c’est la ligne 12 de votre code qui s’applique, avec le titre en dur.

    #1940379
    strabsquad
    Participant
    Initié WordPress
    8 contributions

    Non non justement 🙂

    Je demande l’affichage du titre de la page parente quand la page en question est bien une page et non un article (à l’aide du ! qui se traduit par différent de)

    A contrario je veux que Nos actualités soit affiché sur les articles et sur la page des articles. Vu que mon site ne comporte ne comporte pratiquement que des pages avec des parents et ces pages d’actus, je n’ai alors pas besoin de faire une troisième condition.

    Comment expliquer sur la page des articles, un echo page->ID m renvoie l’ID du dernier article posté ?

    #1940622
    strabsquad
    Participant
    Initié WordPress
    8 contributions

    J’ai trouvé une solution à mon problème finalement.

    La fonction de vérification is_blog n’existant pas sur WordPress, il faut la créer.

    function is_blog () {
    global $post;
    $posttype = get_post_type($post );
    return ( ((is_archive()) || (is_author()) || (is_category()) || (is_home()) || (is_single()) || (is_tag())) && ( $posttype == 'post') ) ? true : false ;
    }
    functions.php

    Puis, l’utiliser dans le code comme vous utiliseriez une autre fonction.

    			<div class="header_wrap">
    <?php
    $parent_title = get_the_title($post->post_parent);
    if (!is_singular('post') && !is_blog()) {
    echo '<h1>'.$parent_title .'</h1>';
    }
    elseif (is_blog()) {
    echo '<h1>Nos actualités</h1>';
    }
    elseif (is_singular('post')) {
    echo '<h1>Nos actualités</h1>';
    }
    ?>
    </div>
    header.php

    #1941157
    Flobogo
    Modérateur
    Maître WordPress
    20159 contributions

    La fonction de vérification is_blog n’existant pas sur WordPress

    Non, pas sous cette forme, mais pas besoin non plus de votre liste à rallonge 😀

    La vérification de la page blog est bien prévue par le Codex : https://codex.wordpress.org/fr:Marqueurs_conditionnels#La_page_du_blog

    Au final, dans votre cas (blog qui n’est pas l’accueil), il faut juste utiliser  ( is_home() )  pour tester la page de blog.  😉

     

    #1941506
    strabsquad
    Participant
    Initié WordPress
    8 contributions

    Je viens d’essayer et effectivement ça fonctionne.

    C’est drôle car j’étais déjà tombé sur cette page sur le codex, j’avais « joué » avec sans pouvoir parvenir à mes fins… Sans doute j’ai du faire une confusion vu le nom de la fonction pas assez explicite :p

    Merci en tout cas !

    #1942121
    Flobogo
    Modérateur
    Maître WordPress
    20159 contributions

    C’est vrai que is_blog serait pas mal comme solution, mais … il faudrait mettre à jour des milliers de thèmes, donc à mon avis … tant pis pour votre idée 😉

    On peut passer le topic en « résolu » ? (ou vous pouvez le faire aussi, en haut à gauche au-dessus du 1er post)

14 sujets de 1 à 14 (sur un total de 14)
  • Vous devez être connecté pour répondre à ce sujet.