Création de pages listant les articles d’une catégorie, triés selon un tag (Créer un compte)

  • WordPress :6.1
  • Statut : non résolu
5 sujets de 1 à 5 (sur un total de 5)
  • Auteur
    Messages
  • #2442028
    Renaud Blasinski
    Participant
    Initié WordPress
    1 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL : 7.2.34 (que je dois mettre à jour)
    • Thème utilisé : Oceanly (en test… Mais est-ce le bon ?)
    • Extensions en place : Plein, je teste…
    • Nom de l’hébergeur : je ne sais plus (OVH ?)
    • Adresse du site : https://unsa-vnf.org

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

    Bonjour à tous !

    Je suis nouveau dans la communauté.
    On m’a attribué un site internet l’année dernière, en WordPress, mais je ne maîtrise pour ainsi dire rien. Et les tutos sont tout sauf clairs.
    J’avais commencé à fouiller et bidouiller à l’époque, puis j’ai baissé les bras, pris par d’autres occupations. Et va falloir que je m’y remette, sérieusement cette fois.
    D’autant que j’ai sans doute fait plein de trucs qu’il ne fallait pas : je ne comprenais pas bien l’intérêt des pages, je pensais me contenter de tags et/ou catégories (sans bien comprendre l’intérêt de les avoir distingués). Et du coup, j’ai eu le temps de mûrir mes idées : maintenant, je sais ce que je veux, et j’ai bien compris l’intérêt des pages, tags et catégories.

    Je souhaiterais faire quelque chose qui me semblait naïvement la base de la base, mais qui apparemment n’existe pas : j’avais passé des jours à chercher à l’époque, sur une armada de sites différents, et n’avais rien trouvé, ou alors des réponses qui n’ont vraiment rien à voir… Et aujourd’hui je relance la recherche, toujours aussi inefficacement.
    Donc je vais plutôt poser la question, j’aurai l’air bête moins longtemps.

    Je souhaite disposer de menus déroulants, avec une hiérarchie, amenant à des pages listant tous mes articles correspondants (donc, les catégories semblent le bon choix).
    MAIS : je souhaite que ces pages trient les articles en tenant compte d’un critère supplémentaire, qui est la présence ou non d’un tag « A la une ».

    En gros, ma page liste d’abord les articles ayant le tag « A la une », puis tous les autres articles ne l’ayant pas (les plus récents en haut).

    => Comment puis-je procéder pour obtenir ce résultat ? (sans devoir préalablement passer un bac +17 en PHP, je n’aurai pas le temps ^^ )

    Merci par avance de vos éclairages bienveillants 😀

    #2442060
    Flobogo
    Modérateur
    Maître WordPress
    20070 contributions

    Bonjour,

    Il vous faut un thème qui gère les « sticky post » (l’équivalent de votre « à la une ») … et là, c’est magique, le « tri » se fera tout seul.

    Et voilà : il y a à ce jour 2943 thèmes gratuits avec la fonctionnalité « sticky post » (en français : articles mis en avant)

    #2442094
    ferman
    Participant
    Maître WordPress
    6921 contributions

    Bonjour,

    Je pense que ce n’est pas si simple: il vous faut bien un thème qui gère les « sticky  posts » mais les sticky posts s’ils sont bien sticky en page d’accueil ou archive ne le sont pas dans les catégories.

    Il faut donc deux boucles par catégorie. Une pour les articles à mettre en avant dans une catégorie donnée et une autre pour les autres articles de cette catégorie.

    Procédure testée chez moi:

    • on crée une page par catégorie (ou on utilise une page déjà existante,).
    • on met un shortcode dans ces pages (le même pour toutes les pages ou des shortcodes différents)
    • dans functions.php du thème on colle le code ci-dessous:
    function categorie() { 

    $sticky = get_option( 'sticky_posts' );
    $cats = array (3,4,5); // remplacer par les id de vos categories

    foreach($cats as $cat):

    $args1 = array( 'post__in' => $sticky,'cat' => $cat);
    $args2 = array( 'post__not_in' => $sticky,'cat' => $cat);
    $the_query1 = new WP_Query( $args1 );
    $the_query2 = new WP_Query( $args2 );

    ?><ul><?php ;
    // ajuster les valeurs de $cat et le nom des pages
    if ($cat == 4 && is_page("page-test2")){
    while ( $the_query1->have_posts() ) {
    $the_query1->the_post();
    echo '<li><a href="<?php the_permalink(); ?>">',the_title(),'</a></li>';
    }
    while ( $the_query2->have_posts() ) {
    $the_query2->the_post();
    echo '<li><a href="<?php the_permalink(); ?>">',the_title(),'</a></li>';
    }
    }
    if ($cat == 3 && is_page("page-test4")){
    while ( $the_query1->have_posts() ) {
    $the_query1->the_post();
    echo '<li><a href="<?php the_permalink(); ?>">',the_title(),'</a></li>';
    }
    while ( $the_query2->have_posts() ) {
    $the_query2->the_post();
    echo '<li><a href="<?php the_permalink(); ?>">',the_title(),'</a></li>';
    }
    ?></ul><?php
    }
    endforeach;
    }
    add_shortcode('shortcode2a', 'categorie');
    //remplacer par votre shortcode

    Normalement ça devrait fonctionner. Il y a peut-être (sans doute) plus simple mais je n’ai pas trouvé et finalement en l’état ce n’est pas très compliqué. Si vous avez beaucoup de catégories, le code sera forcément plus long mais pas plus compliqué. Afficher les articles par rang croissant ou décroissant est juste une question de réglage.

    • Cette réponse a été modifiée le il y a 1 année et 2 mois par ferman.
    • Cette réponse a été modifiée le il y a 1 année et 2 mois par ferman.
    #2442124
    ferman
    Participant
    Maître WordPress
    6921 contributions

    Normalement ça devrait fonctionner.

    Non car je m’étais un peu mélangé les pinceaux dans mon code et le permalien ne fonctionnait pas . Correction ci-dessous.


    echo '<li><a href="<?php the_permalink(); ?>">',the_title(),'</a></li>';

    //remplacer à 4 endroits par:

    ?><li><a href="<?php the_permalink(); ?>"><?php the_title();?></a> </li> <?php

    • Cette réponse a été modifiée le il y a 1 année et 2 mois par ferman.
    • Cette réponse a été modifiée le il y a 1 année et 2 mois par ferman.
    #2442181
    Flobogo
    Modérateur
    Maître WordPress
    20070 contributions

    En effet, les « sticky » sont groupés toutes catégories confondues, si on ne précise pas la catégorie. Désolée …

    Si vous ne vous sentez pas d’attaque pour essayer les codes proposés par @ferman, il y a peut-être une solution avec l’extension Content Views – Post Grid & Filter

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