Altération de la loop pour n’afficher que certains posts (Créer un compte)

  • Statut : non résolu
7 sujets de 1 à 7 (sur un total de 7)
  • Auteur
    Messages
  • #526089
    Jean-Sam
    Membre
    Initié WordPress
    23 contributions

    Bonjour,

    Je cherche à altérer la loop en n’affichant que les posts tagués “occasion”. Voici mon code qui m’affiche… tous les posts :(

    Une bonne âme pour m’aider SVP ? Merci.

    // to filter the content displayed by get_the_content
    $content = apply_filters(‘the_content’, $content);
    $content = str_replace(‘]]>’, ‘]]>’, $content);
    ?>

    // WP_Query arguments
    $args = array (
    ‘tag_name’ => ‘occasion’,
    );

    // The Query
    $query = new WP_Query( $args );

    // The Loop
    if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
    $query->the_post();

    echo ‘

    ‘.

    ‘ . get_the_title() . ‘

    ‘.
    get_the_content().

    ‘.

    ‘;

    }
    } else {
    echo ‘No post found’;
    }
    // Restore original Post Data
    wp_reset_postdata();
    ?>

    #901833
    Guy
    Participant
    Maître WordPress
    14821 contributions

    $query = new WP_Query( ‘tag=occasion’ );

    Si ‘occasion’ est le slug du tag (l’identifiant)

    #901834
    Jean-Sam
    Membre
    Initié WordPress
    23 contributions

    Extra, merci Guy !

    Je souhaite maintenant n’afficher que les posts qui ne SONT PAS taggués ‘occasion’.
    Dans mon incommensurable compétence, j’ai donc le code suivant (obtenu en modifiant la premiere ligne) :

    <?php
    // The Query
    $query = new WP_Query( ‘tag!=occasion’ ); // si ‘occasion’ n’est pas le slug du tag

    // The Loop
    if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
    $query->the_post();

    echo ‘

    ‘.

    ‘ . get_the_title() . ‘

    ‘.
    get_the_content().

    ‘.

    ‘;
    }
    } else {
    echo ‘No post found’;
    }
    // Restore original Post Data
    wp_reset_postdata();
    ?>

    Evidemment, cela ne… marche pas !
    Aurais-tu la gentillesse de m’expliquer pourquoi et, si possible, de m’indiquer la solution ?
    Merci mille fois.
    Cordialement.

    #901835
    Guy
    Participant
    Maître WordPress
    14821 contributions

    on ne peut pas se servir des slugs (identifiants), voir codex: http://codex.wordpress.org/Class_Reference/WP_Query#Tag_Parameters

    il faudra donc retrouver l’id du tag ‘occasion’ , en imaginant que ce soit 23, il faudra mettre :

    $query = new WP_Query( array( ‘tag__not_in’ => array( 23 ) ) );

    #901836
    Jean-Sam
    Membre
    Initié WordPress
    23 contributions

    Un très grand merci pour ton aide, et ta très grande réactivité.
    Bien cordialement.
    JSam

    #901837
    Jean-Sam
    Membre
    Initié WordPress
    23 contributions

    Ah si ! une dernière question s’il te plaît :

    Le code destiné à “injecter le html”, c’est :
    echo ‘

    ‘.

    ‘ . get_the_title() . ‘

    ‘.
    get_the_content().

    ‘.

    ‘;
    }

    Mais rédiger ce code spécifique c’est un peu lourd…J’aurais aimé “copier/coller” mon code HTML, du style :

    get_the_title()

    Cela te semble-t-il possible, ou bien est-il impératif de faire ce que j’ai fait (grâce à ton aide) ?

    #901838
    Jean-Sam
    Membre
    Initié WordPress
    23 contributions

    J’y suis parvenu mais j’ai simplifié la boucle en suivant le codex (http://codex.wordpress.org/fr:La_Boucle) :

    <?php
    $query = new WP_Query( array (‘tag__not_in’ => array (16) ) ); // exclut de la boucle le tag dont l’ID est 16

    // The Loop
    while ( $query->have_posts() ) : $query->the_post();?>

    <a href="” title=””>

    <?php
    wp_reset_postdata();
    ?>

7 sujets de 1 à 7 (sur un total de 7)
  • Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.