- Statut : non résolu
- Ce sujet contient 26 réponses, 3 participants et a été mis à jour pour la dernière fois par
Gueblo, le il y a 9 années et 9 mois.
-
AuteurMessages
-
28 septembre 2015 à 13 h 23 min #554647
Ma configuration WP actuelle
– Version de WordPress : dernière
– Version de PHP/MySQL :
– Thème utilisé : perso
– Extensions en place : aucune
– Nom de l’hebergeur : local
– Adresse du site :Problème(s) rencontré(s) :
Bonjour,
je rencontre des problèmes avec les instructions get_template_part & get_post_format.
la partie de code suivante fait planter ma page et je ne comprends pas pourquoi. :
$format = get_post_format();
get_template_part( ‘content’, $format);Le code complet :
<?
print("
<aside id='gauche' class='unit-".$unitgauche."'>
« );
get_sidebar(‘gauche’);
print( »
</aside>
<main class='unit-".$unitmain."'>
« );
if (have_posts()) : while(have_posts()) : the_post();
echo » <div class='article'>« ;
$format = get_post_format();
get_template_part( ‘content’, $format); // dans mon arborescence, j’ai une page content.php et une page content-gallery.php. ces deux pages ne sont jamais appelées.
the_post_navigation ();
if (comments_open() || get_comments_number()){
comments_template();
}
echo « </div>« ;
endwhile;
endif;
print( »
</main>
<aside id='droite' class='unit-".$unitdroite."'> « );
get_sidebar(‘droite’);
echo « </aside>« ;
?>
</body>
</html>Est-ce que que quelqu’un parmi vous voit d’où vient l’erreur ?
30 septembre 2015 à 9 h 30 min #1022839Bonjour,
La fonction get_template_part() va simplement rechercher le fichier php précisé.
Si le fichier content-gallery.php n’est pas utilisé c’est probablement que la page appelée n’a pas de format d’article gallery … ou qu’il n’y a pas d’articles à afficher …
Quel est ce fichier avec le code que tu nous montres ?Par ailleurs, je t’engage à mieux structurer ton code, en évitant les print, et en indentant tes balises HTML pour mieux t’y retrouver :
<aside id="gauche" class="unit-« >
</aside>
<main class="unit-« >
<div class="article">
</div>
<aside id="droite" class="unit-« >
</aside>
30 septembre 2015 à 10 h 28 min #1022840évite cette notation <? et utilise plutôt <?php
il y a un espace après the_post_navigation ce qui donne the_post_navigation (); alors qu’il n’en faut pas, ce qui donnerait the_post_navigation();
pour le reste, ta question est floue dans le sens où on ne sait même pas où est-ce que tu utilises ce code.
30 septembre 2015 à 15 h 45 min #1022841Bonjour,
Merci pour vos réponses.
Concernant la structure du code, est-ce que les print sont moins bien gérés par WordPress ? je n’ai pas l’habitude d’utiliser toutes ces balises php. Je préférais la solution des print, pour autant qu’elle ne soit pas source d’erreur.. ?
Le code dont on discute est issus de la page single.php. Lorsque je clique sur un article, la page single m’affiche une page blanche, avec uniquement une balise
issue de single.
Dans les pages crées, j’ai un content.php et un content-gallery.php avec un article test en type gallerie. Si j’ai bien compris les articles par défaut sont affichés par content.php du coup, je devrais aussi voir cette page.Question supplémentaire : n’existe-t-il pas un outil pour débugué le code ? Les erreurs habituels qu’on voit quand on code du php ne s’affichent pas. (parse error et cie.).
merci pour vos infos
30 septembre 2015 à 18 h 55 min #1022842Le code dont on discute est issus de la page single.php. Lorsque je clique sur un article, la page single m’affiche une page blanche, avec uniquement une balise
issue de single.
Dans les pages crées, j’ai un content.php et un content-gallery.php avec un article test en type gallerie. Si j’ai bien compris les articles par défaut sont affichés par content.php du coup, je devrais aussi voir cette page.j’aurais vraiment plaisir à te répondre mais je ne comprends pas ce que tu dis…
30 septembre 2015 à 20 h 58 min #1022843mince.. je pars de loin on dirait 😕 mes excuses si je ne suis pas claire
Je recommence.
J’ai une page single.php avec pour code
<?php
// au départ : copie de index.php
get_header();
//test de quelle side bar est activée et définition des largeurs de boite en conséquence
if (is_active_sidebar('gauche') && is_active_sidebar('droite')) {
$unitgauche = 25;
$unitdroite = 25 ;
$unitmain = 50;
}
else if (is_active_sidebar('gauche') && is_active_sidebar('droite')==false){
$unitgauche = 25;
$unitdroite = 0 ;
$unitmain = 75;
}
else if (is_active_sidebar('gauche') == false && is_active_sidebar('droite')){
$unitgauche = 0;
$unitdroite = 25;
$unitmain = 75;
}
else if (is_active_sidebar('gauche') == false && is_active_sidebar('droite') == false){
$unitgauche = 0;
$unitdroite = 0;
$unitmain = 100;
}
print("
<aside id='gauche' class='unit-".$unitgauche."'>
« );
get_sidebar(‘gauche’);
print( »
</aside>
« );
echo « <h3>c’est la page single.php qui est affichée</h3>« ;
echo » <div class='article'>« ;
if (have_posts())
{
while ( have_posts() ) : the_post();
get_template_part( ‘content’, get_post_format() );
the_post_navigation();
if (comments_open() || get_comments_number()){
comments_template();
}
endwhile;
}
echo « </div>« ;
print( »
<aside id='droite' class='unit-".$unitdroite."'> « );
get_sidebar(‘droite’);
echo « </aside>« ;
?>Dans le même répertoire, j’ai une page content.php
<?php
echo "<header class='article'><h1>« ;
the_title();
echo « </h1></header>« ;
echo « <div class='contenu'>« ;
if (has_excerpt())
{
the_excerpt();
the_content();
echo « </div>« ;
echo « <h2> content.php est affichée</h2>« ;
echo « <footer class='article'> »
the_category();
echo » – « ;
edit_post_link();
echo « </footer>« ;
?>Ainsi qu’une page content-gallery.php
<?
// au départ : copie de single.php
get_header();
//test de quelle side bar est activée et définition des largeurs de boite en conséquence
if (is_active_sidebar('gauche') && is_active_sidebar('droite')) {
$unitgauche = 25;
$unitdroite = 25 ;
$unitmain = 50;
}
else if (is_active_sidebar('gauche') && is_active_sidebar('droite')==false){
$unitgauche = 25;
$unitdroite = 0 ;
$unitmain = 75;
}
else if (is_active_sidebar('gauche') == false && is_active_sidebar('droite')){
$unitgauche = 0;
$unitdroite = 25;
$unitmain = 75;
}
else if (is_active_sidebar('gauche') == false && is_active_sidebar('droite') == false){
$unitgauche = 0;
$unitdroite = 0;
$unitmain = 100;
}
print("
<aside id='gauche' class='unit-".$unitgauche."'>
« );
get_sidebar(‘gauche’);
print( »
</aside>
« );
if (have_posts()) : while(have_posts()) : the_post();
echo » <div class='article'><h3> content-gallery.php est affichée</h3>« ;
print( »
<h2> page content-gallery.php<a href=' ".get_the_permalink()." '> « .get_the_title(). » </a></h2>
« );
the_content();
get_template_part(‘content’, get_post_format());
the_post_navigation ();
if (comments_open() || get_comments_number()){
comments_template();
}
echo « </div>« ;
endwhile;
endif;
print( »
<aside id='droite' class='unit-".$unitdroite."'> « );
get_sidebar(‘droite’);
echo « </aside>« ;
?>Sur mon site, j’ai écrit plusieurs articles, en format par défaut et en format gallery.
Quand je clique sur un article de type par défaut, j’obtiens uniquement une page blanche avec le titrede la page single, alors que si j’ ai bien compris, c’est la page content.php qui devrait être appelée par l’instruction get_template_part.
Quand je clique sur une article de type gallery, j’obtiens… une page qui pourrait être scrollée à l’infini avec d’écrit, un nombre incalculable de fois
« Navigation de l’article
Article précédent
un autre article sur un sujet x – Format par défaut
Laisser un commentaire & formulaire qui va avec. «
Bref, je suis perdue et j’ai très envie de comprendre pourquoi.
Un grand merci d’avance pour le temps passé à m’aider.30 septembre 2015 à 21 h 20 min #1022844si tu utilises le format par défaut alors get_post_format() renvoie FALSE
il faut donc faire quelque chose comme ça :if(!get_post_format()) {
get_template_part(‘single’);
} else {
get_template_part(‘format’, get_post_format());
}et créer un fichier content-standard.php qui dans ton cas contiendra la même chose que single.php
30 septembre 2015 à 21 h 20 min #1022845j’ai oublié d’enlever la derniere phrase, ne la prend pas en compte
1 octobre 2015 à 3 h 39 min #1022846Ok.
Je comprends pas pourquoi tu mets ‘format’ dans le get_template_part. j’avais compris que cette instruction concaténait le premier argument, avec le deuxième et que du coup ce qui va dans la première virgule, c’est le début du nom de fichier, à savoir si le fichier c’est content-image.php, on met ‘content’, dans la première virgule.1 octobre 2015 à 3 h 42 min #1022847et ce que je ne comprends pas non plus, c’est que le code que tu proposes est chez moi dans la page single.php. Donc single.php s’appelle elle-même ? c’est curieux, non ?
1 octobre 2015 à 6 h 56 min #1022848il faut adapter le code à ton cas
ça donnerait :if(!get_post_format()) {
get_template_part(‘content’);
} else {
get_template_part(‘content’, get_post_format());
}1 octobre 2015 à 7 h 10 min #1022849Je pense que Gueblo t’as plus embrouillé qu’autre chose …
Reprenons les choses calmement 🙂
Tu as un fichier single.php qui est exécuté par WordPress lorsque tu essayes d’afficher la page d’un article seul. Dans ce fichier tu charges l’entête de ton site (get_header) puis en fonction du post_format tu exécutes le fichier content-{post-format}.php. Dans ce fichier là, il ne faut surtout pas rappeler le header comme tu le fais, cela fait deux headers pour la même page => plantage ! Les fichiers content.php et content-gallery.php ne doivent contenir que les instructions d’affichage du contenu de l’article en question, c’est ton fichier single.php qui affiche tout le reste (header, sidebar et footer dans ton cas).
Si je reprends ton exemple, les fichiers single.php et content.php sont corrects, par contre le fichier content-gallery.php n’est pas correct, il doit plutôt reprendre la structure de content.php et non de single.php …
Pour essai, copie juste content.php et écrase content-gallery.php avec, et modifie le h2 pour le différencier de content.php 😉Sinon, si get_post_format() retourne false, get_template_part( ‘content’, get_post_format() ) ira chercher content.php … pas besoin de tester le format de post avant …
1 octobre 2015 à 7 h 30 min #1022850Benzouye a complètement raison, je n’aurais pas mieux dit !
Et effectivement ce que j’ai dit c’est n’importe quoi, désolé. Je me suis appuyé sur des infos anciennes et que je n’avais pas encore testées.1 octobre 2015 à 20 h 29 min #1022851OK, ça s’éclaircit.
Merci pour les explications.
Par contre, quand je clique sur un article, j’ai tjs une single.php qui m’affiche une page blanche, à l’exception de son titre, quelque soit le type d’article affiché.1 octobre 2015 à 20 h 36 min #1022852ce serait pas à cause de ça ? :
if (has_excerpt())
{
the_excerpt();
the_content(); -
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.