- WordPress :4.8
- Statut : non résolu
- Ce sujet contient 13 réponses, 3 participants et a été mis à jour pour la dernière fois par Flobogo, le il y a 7 années et 3 mois.
-
AuteurMessages
-
17 octobre 2017 à 14 h 35 min #1932582
Bonjour,
Ma configuration WP actuelle
- Version de PHP/MySQL : 7.0
- Thème utilisé : Html5blank theme
- Extensions en place :
- Nom de l’hébergeur : ATE
- Adresse du site : https://donnees-sociales.verspieren.com/nos-actualites/
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.17 octobre 2017 à 14 h 44 min #1932597Bonjour 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/
17 octobre 2017 à 14 h 50 min #1932599Merci 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.php17 octobre 2017 à 15 h 08 min #1932613Là, 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 ».
17 octobre 2017 à 23 h 13 min #1933042Bonjour,
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.
18 octobre 2017 à 9 h 34 min #1933608Oui 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é.18 octobre 2017 à 23 h 34 min #1934357Et 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 🤔
19 octobre 2017 à 8 h 27 min #1934669Bin 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…
21 octobre 2017 à 0 h 46 min #1937640Oui, 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.
23 octobre 2017 à 9 h 55 min #1940379Non 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é ?
23 octobre 2017 à 15 h 09 min #1940622J’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.phpPuis, 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.php24 octobre 2017 à 0 h 13 min #1941157La 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. 😉
24 octobre 2017 à 8 h 40 min #1941506Je 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 !
24 octobre 2017 à 23 h 24 min #1942121C’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)
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.