- WordPress :6.1
- Statut : non résolu
- Ce sujet contient 4 réponses, 3 participants et a été mis à jour pour la dernière fois par Flobogo, le il y a 1 année et 7 mois.
-
AuteurMessages
-
26 janvier 2023 à 18 h 42 min #2442028
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 😀
- Ce sujet a été modifié le il y a 1 année et 7 mois par Renaud Blasinski.
27 janvier 2023 à 0 h 09 min #2442060Bonjour,
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)
27 janvier 2023 à 10 h 05 min #2442094Bonjour,
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 shortcodeNormalement ç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.
27 janvier 2023 à 15 h 45 min #2442124Normalement ç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> <?php27 janvier 2023 à 23 h 43 min #2442181En 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
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.