afficher image custom post type (Créer un compte)

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 19)
  • Auteur
    Messages
  • #495777
    Soraze
    Membre
    Padawan WordPress
    90 contributions

    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
    } //if

    Merci de votre aide

    #774164
    luciole135
    Participant
    Maître WordPress
    13714 contributions

    Je 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 ?

    #774165
    Guy
    Participant
    Maître WordPress
    14817 contributions

    le 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.

    #774166
    Soraze
    Membre
    Padawan WordPress
    90 contributions

    Salut, 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?

    #774167
    luciole135
    Participant
    Maître WordPress
    13714 contributions

    Comme 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.

    #774168
    Guy
    Participant
    Maître WordPress
    14817 contributions

    comme 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.

    #774169
    luciole135
    Participant
    Maître WordPress
    13714 contributions
    Soraze 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
    } //if

    Je 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_Query

    #774170
    Soraze
    Membre
    Padawan WordPress
    90 contributions

    Merci, 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
    } //if

    Quand 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’);

    #774171
    Guy
    Participant
    Maître WordPress
    14817 contributions

    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
    )
    )

    #774172
    Guy
    Participant
    Maître WordPress
    14817 contributions

    Je 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 ».

    #774173
    luciole135
    Participant
    Maître WordPress
    13714 contributions
    Guy 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.

    #774174
    luciole135
    Participant
    Maître WordPress
    13714 contributions
    Soraze wrote:
    Merci, ok ça m’a aidé, le « post-type » posait problème.

    C’était donc bien une mauvaise construction de $arg. 🙂

    #774175
    luciole135
    Participant
    Maître WordPress
    13714 contributions

    Pour 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 $arg

    remplacez la ligne :
    ‘post_type’ => get_post_type($post->ID)

    par

    ‘post_type’ => $post_id

    pour voir si cela marche ?

    #774176
    Soraze
    Membre
    Padawan WordPress
    90 contributions

    merci 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 ….

    #774177
    luciole135
    Participant
    Maître WordPress
    13714 contributions

    Votre get-post_type ne fonctionne pas car son argument n’est pas bon, cela doit être $post et non pas $post->ID.

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