- Statut : non résolu
- Ce sujet contient 18 réponses, 3 participants et a été mis à jour pour la dernière fois par Soraze, le il y a 13 années et 6 mois.
-
AuteurMessages
-
2 juin 2011 à 3 h 17 min #495777
Salut,
– Version de WordPress : 3.1
Problème(s) rencontré(s) :
je ne comprends pas pourquoi mon code ne répond plus après ma_query ? le nom du term s’affiche bien, mais ensuite, les echo ne marchent pas, auriez-vous une idée? j’aimerais afficher le thumbnail de chaque post type ‘diaporama’ , de la taxonomy ‘genre’ :
<div id="cat-diapo">
<ul>
<?php
$terms = get_terms("genre");
$count = count($terms);
if ( $count > 0 ){
foreach ( $terms as $term ) {
global $post;
echo « <li><span> » . $term->name .’A</span>‘;//s’affiche bien
/* images sub-cat */
$args=array(
‘post_type’ => get_post_type($post->ID),
‘posts_per_page’ => -1,
‘tax_query’ => array(
array (
‘taxonomy’ => $term->taxonomy,
‘field’ => ‘slug’,
‘terms’ => $term->slug
)
)
); //args
$ma_query = new WP_Query($args); //ne s’affiche pas à partir d’ici
while ( $ma_query->have_posts())
{
echo ‘hey’; //pas de résultat de l’echo
/*
$ma_query->the_post();
$image = the_post_thumbnail();
//$image = the_post_thumbnail(« mini », array(« alt »=> the_post()->ID));
//echo $image;
$tit = get_the_title();
$tit2 = the_title();
echo $tit2;*/
}
wp_reset_postdata();
echo ‘</li>‘;
} //foreach
} //ifMerci de votre aide
2 juin 2011 à 9 h 07 min #774164Je ne suis pas un pro de PHP, mais si le programme ne rentre pas dans le WHILE, c’est que la condition $ma_query->have_posts() est fausse, non ?
2 juin 2011 à 9 h 21 min #774165le count ne semble pas servir à grand chose dans l’exemple donné.
Est ce que la variable $post est renseignée? essaye de faire un echo sur le titre du post pour le savoir ou sur l’ID.
2 juin 2011 à 13 h 18 min #774166Salut, merci,
non toujours pas, j’ai essayé $tit2 = the_title(); echo $tit2; et d’enlever l’echo avant l’appel au post, j’ai pourtant également global post avant la boucle, mais toujours pas… une idée?2 juin 2011 à 13 h 24 min #774167Comme vous ne rentrez pas dans la boucle WHILE, c’est que l’argument $arg est vide, donc que l’erreur vient de la construction du $arg, juste avant !
Vous pouvez le vérifier en faisant un print_r($arg); après sa construction. Si rien ne s’affiche, c’est que $arg est vide et donc aussi mal construit.
2 juin 2011 à 14 h 39 min #774168comme dit Luciole, tu ne rentres pas dans la boucle, je te demandais de vérifier l’iD du post avant de rentrer dans la boucle, juste après le global $post;
Si ton $post n’est pas valide à l’entrée tu n’auras rien de significatif en sortie.
2 juin 2011 à 14 h 45 min #774169Soraze wrote:<div id="cat-diapo">
<ul>
0 ){
foreach ( $terms as $term ) {
global $post;
echo « <li><span> » . $term->name .’A</span>‘;//s’affiche bien
/* images sub-cat */
$args=array(
‘post_type’ => get_post_type($post->ID),
‘posts_per_page’ => -1,
‘tax_query’ => array(
array (
‘taxonomy’ => $term->taxonomy,
‘field’ => ‘slug’,
‘terms’ => $term->slug
)
)
); //args
$ma_query = new WP_Query($args); //ne s’affiche pas à partir d’ici
while ( $ma_query->have_posts())
{
echo ‘hey’; //pas de résultat de l’echo
/*
$ma_query->the_post();
$image = the_post_thumbnail();
//$image = the_post_thumbnail(« mini », array(« alt »=> the_post()->ID));
//echo $image;
$tit = get_the_title();
$tit2 = the_title();
echo $tit2;*/
}
wp_reset_postdata();
echo ‘</li>‘;
} //foreach
} //ifJe ne connais pas bien cela, mais il y a un array dans un array, n’y aurait-il pas un array de trop dans la construction de $arg ?
Ceci pour être plus clair m’interroge :
tax_query’ => array(
array
Car je ne vois aucune utilité ici, à un tableau de tableau qui ne sert à rien !J’ai regardé le codex, cela est aussi construit de même avec un array dans un array, donc l’erreur ne vient pas de l’array dans l’array.
http://codex.wordpress.org/Class_Reference/WP_Query2 juin 2011 à 15 h 02 min #774170Merci, ok ça m’a aidé, le « post-type » posait problème, maintenant j’ai bien les titres, les images en-dessous, mais les images ne correspondent pas! Ce sont en fait les images des articles! et non des custom post type, pourtant les titres correspondent bien avec les custom post types. Je précise, je n’ai aucun autre code dans la page, uniquement celui-ci.
<ul>
0 ){
foreach ( $terms as $term ) {
echo « <li><span>name : » . $term->name .' »<br /></span>‘;
$args = array(
//’post_type’ => get_post_type($post->ID),
‘posts_per_page’ => -1,
‘tax_query’ => array(
array (
‘taxonomy’ => $term->taxonomy,
‘field’ => ‘slug’,
‘terms’ => $term->slug
)
)
); //args
$ma_query = new WP_Query($args);
while ( $ma_query->have_posts())
{
$ma_query->the_post();
$tit2 = the_title();
echo $tit2;
$image = the_post_thumbnail(« mini », array(« alt »=> the_post()->ID));
echo $image;
//$tit = get_the_title();
//echo $tit2;
//echo $tit;
}
wp_reset_postdata();
echo ‘</li>‘;
} //foreach
} //ifQuand j’ai enregistré mes custom post type et taxonomy, j’ai fait comme cela :
register_taxonomy(‘genre’, array(‘diapo’), array( …
register_post_type(‘diapo’,$args);
register_taxonomy_for_object_type(‘genre’, ‘diapo’);2 juin 2011 à 15 h 05 min #774171si c’est normal, i n’y a qu’un seul array ici mais il peut aussi y en avoir plusieurs, du style:
‘tax_query’ => array(
array (
‘taxonomy’ => $term->taxonomy,
‘field’ => ‘slug’,
‘terms’ => $term->slug
),
array (
‘taxonomy’ => $autretaxonomie,
‘field’ => ‘slug’,
‘terms’ => $term->slug
)
)2 juin 2011 à 15 h 08 min #774172Je m’en doutais, fais attention quand tu utilisées une variable qu’elle soit correctement renseignée.
Si tu ne met pas de post_type, il ira chercher post par défaut je crois. Met ton custom post type en « dur ».2 juin 2011 à 15 h 12 min #774173Guy wrote:si c’est normal, i n’y a qu’un seul array ici mais il peut aussi y en avoir plusieurs, du style:‘tax_query’ => array(
array (
‘taxonomy’ => $term->taxonomy,
‘field’ => ‘slug’,
‘terms’ => $term->slug
),
array (
‘taxonomy’ => $autretaxonomie,
‘field’ => ‘slug’,
‘terms’ => $term->slug
)
)J’avais édité mon message après avoir vérifié le codex.
2 juin 2011 à 15 h 19 min #774174Soraze wrote:Merci, ok ça m’a aidé, le « post-type » posait problème.C’était donc bien une mauvaise construction de $arg. 🙂
2 juin 2011 à 15 h 34 min #774175Pour utiliser le code tel que vous l’avez écrit au départ en corrigeant l’erreur du post_type, avant de construire le $arg, faites :
$post_id = get_post_type($post->ID);
puis dans le $argremplacez la ligne :
‘post_type’ => get_post_type($post->ID)par
‘post_type’ => $post_id
pour voir si cela marche ?
2 juin 2011 à 16 h 11 min #774176merci de votre aide, malheureusement je ne comprends d’où vient le problème :
j’ai essayé la technique de luciole : mais là les images ne s’affichent pas, donc ça me fait encore bugger la boucle
pour le nom de la taxonomy « en brut », j’ai mis « diapo », mais encore une fois, les images des « articles » s’affichent ….2 juin 2011 à 16 h 35 min #774177Votre get-post_type ne fonctionne pas car son argument n’est pas bon, cela doit être $post et non pas $post->ID.
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.