[Résolu] Afficher les articles d’une catégorie sauf les sticky posts (Créer un compte)

  • WordPress :4.7
  • Statut : résolu
7 sujets de 1 à 7 (sur un total de 7)
  • Auteur
    Messages
  • #1639050
    Julie
    Participant
    Padawan WordPress
    80 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL : 5.6.30
    • Thème utilisé : perso
    • Extensions en place : ACF – CPT UI – Monsters Insight – MailPoet – ithemes security
    • Nom de l’hébergeur : OVH
    • Adresse du site : en développement

    Problème(s) rencontré(s) :

    Bonsoir

    Sur ma page d’accueil j’ai un diaporama qui affiche les articles mis en avant. Sous le diaporama, j’affiche les articles de certaines catégories avec ce code :

    <?php query_posts('cat=6&showposts=3&orderby=date'); global $more; $more = 0;  ?>
    <?php while(have_posts()): the_post(); ?>

    Je souhaite que ces lignes n’affichent pas les articles mis en avant dans ces catégories, puisqu’ils sont déjà dans le slider.

    J’ai bien cherché sur Google et sur le codex mais je ne connais pas bien le PHP.

    Voilà, si quelqu’un veut bien m’aider…

    Julie

    #1639095
    Flobogo
    Gestionnaire du forum
    Maître WordPress
    17083 contributions

    Bonjour,

    Regardez là : https://codex.wordpress.org/Sticky_Posts

    Il faudra modifier votre query_posts pour ajouter un array qui contiendra à la fois vos règles d’affichage (catégorie 6, afficher 3 articles, etc…) et la règle d’exclusion des articles mis en avant (sticky)

    En fait, vous pouvez même ajouter ça dans votre définition des posts demandés :

    ignore_sticky_posts=1

    Dans ce cas, 1 est le nombre de posts sticky à exclure. Si vous en avez 5 en diaporama, il faut mettre

    ignore_sticky_posts=5
    #1639239
    Julie
    Participant
    Padawan WordPress
    80 contributions

    Merci Flobogo pour votre réponse qui m’a “décoincée” complètement.

    J’ai réussi à rédiger la requête suivante :

    <?php query_posts( array( 'category' => 3, 'showposts' => 3, 'orderby' => 'date', 'order' => 'DESC', 'post__not_in' => get_option( 'sticky_posts' ) ) );?>

    Elle fonctionne parfaitement pour exclure les sticky posts. En revanche, elle ne renvoie pas les articles de la catégorie 3, mais tous les articles. Il doit y avoir une erreur de rédaction dans la partie

     'category' => 3

    mais je ne vois pas laquelle. Si je peux me permettre de solliciter encore une fois votre avis. Merci, Julie

    #1639254
    Flobogo
    Gestionnaire du forum
    Maître WordPress
    17083 contributions

    Et en ajoutant ignore_sticky_posts=5   (pour exclure 5 sticky posts, par ex) à votre code d’origine, comme ça :

    <?php query_posts('cat=6&ignore_sticky_posts=5&showposts=3&orderby=date'); global $more; $more = 0;  ?>
    <?php while(have_posts()): the_post(); ?>

    En fait, je crois que l’array sert à présenter plus proprement le code, mais ça n’est pas indispensable.

    Par contre, ça nécessite de n’avoir pas plus de 5 sticky posts (ou alors, essayez avec avec un nombre plus grand que le nombre de sticky, voir si ça fonctionne)

     

     

    #1639258
    Julie
    Participant
    Padawan WordPress
    80 contributions

    Merci Flobogo, malheureusement ça ne fonctionne pas, ce code que j’avais déjà essayé me remonte bien les articles de la catégorie 6 mais avec les sticky posts.

    J’ai essayé ça mais là c’est carrément erreur :

    <?php query_posts('cat=6&'post__not_in' => get_option( 'sticky_posts' )&showposts=3&orderby=date'); global $more; $more = 0;  ?>

    Je pense que je ne suis pas loin avec le premier code…

    Merci, by the way, je vais continuer de tatonner ^^

    #1639259
    Julie
    Participant
    Padawan WordPress
    80 contributions

    Je vous livre le résultat de mon tâtonnement, cela fonctionne avec ce code

    <?php query_posts( array( 'category_name' => 'nomdelacategorie', 'showposts' => 3, 'orderby' => 'date', 'order' => 'DESC', 'post__not_in' => get_option( 'sticky_posts' ) ) );?>

    autrement dit en remplaçant

    'category' => 3

    par

    'category_name' => 'nomdelacategorie'

    Je ne sais pas si c’est très orthodoxe comme code, mais ça fonctionne. Merci encore pour le coup de pouce Flobogo.

    Julie

    #1639422
    Flobogo
    Gestionnaire du forum
    Maître WordPress
    17083 contributions

    Si le code fonctionne, c’est qu’il est bon. 😉

    D’ailleurs, moi, je trouvais bizarre ‘cat=6’

    Ou il fallait peut-être essayer :

    'category'= '3'

    Parfois, il ne faut pas chercher à comprendre la subtilité de la chose … 😀

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