[Wordpress] Afficher une catégorie dans une page

Salut les gens !

Dans le cadre d’un projet sur lequel je bosse pour le moment, je cherche à effectuer un truc a priori tout con avec Wordpress, mais je sèche sur la marche à suivre.

Ce que je voudrais faire : afficher tous les derniers posts d’une catégorie particulière dans une page.

Donc, en gros, on clique sur le nom de la page, et on a tous les posts d’une catégorie définie qui apparaissent. Malheureusement, en natif, Wordpress n’accepte pas le code PHP dans ses pages. Du coup, j’ai essayé via le plugin RunPHP, mais je n’arrive pas à trouver le code qui va bien pour que ça fonctionne…

Des idées ? Des pistes ?

Question subsidiaire : peut-on spécifier certaines catégories à ne pas afficher dans la liste que renvoie <?php wp_list_cats(); ?> ? Si oui, comment ?

Merci d’avance !
:slight_smile:

Et les liens donnés par le widget catégories ça te va pas?

Non, sinon tu penses bien, ce serait trop facile. :slight_smile:
En fait, je voudrais vraiment que cette catégorie particulière ne soit accessible que via une page.

Donc en fait, sans afficher le widget catégories, tu veux son équivalent dans une page?

Bon, manifestement, ma question n’est pas claire… Je reformule avec un exemple :

Imagine que tu as un site avec 3 catégories : cat1, cat2 et cat3.

Pour cat1 et cat2, pas de souci, je les affiche via la liste classique des catégories de WP. Mais je veux que cat3 n’apparaisse pas dans cette liste et qu’on puisse accéder aux billets classés dans cat3 via une « page Wordpress » dans laquelle je pourrais en outre rajouter du texte courant, suivi des billets.

J’ai essayé de copier le code d’index.php dans une page via le plugin RunPHP, mais ça ne semble pas fonctionner.

Ouais surtout que je viens de voir que si tu fais un bête include php de http://www.tapage.fr?cat=3 ça t’inclus tout, bannière, navigation et tout, donc c’est dégueux

Pour inclure du PHP ta le choix entre RunPHP et ExecPHP comme plugin. Mais n’oublie pas de cocher la case « Run PHP Code ? » au moment de la rédaction de ta page/article.

Oui de cette manière :

<?php wp_list_cats('sort_column=name&optioncount=1&exclude=10, 15'); ?>

où 10 et 15 sont les ID des catégories à exclure.

Tu peux jeter un coup d’œil dans le codex WordPress relatif à :

Ya de quoi faire tout ce que tu veux avec ça.

Ok, ça marche pour l’exclusion des catégories, nickel.

ExecPHP fonctionne aussi. Par contre, quel code utiliser pour n’afficher que les posts d’une catégorie sur la page ?

Sachant que la page archive.php du thème est constituée comme suit, quelles modifications dois-je y apporter pour n’afficher par exemple que la catégorie 10 ?

[codebox]<?php get_header(); ?>

<div id="content">
<?php is_tag(); ?>
    <?php if (have_posts()) : ?>

   <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
   <?php /* If this is a category archive */ if (is_category()) { ?>
    <h2 class="pagetitle">Archives de la Catégorie ‘<?php single_cat_title(); ?>’</h2>
   <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
    <h2 class="pagetitle">Articles Marqués ‘<?php single_tag_title(); ?>’</h2>
   <?php /* If this is a daily archive */ } elseif (is_day()) { ?>
    <h2 class="pagetitle">Archives du <?php the_time('j F, Y'); ?></h2>
   <?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
    <h2 class="pagetitle">Archives de <?php the_time('F, Y'); ?></h2>
   <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
    <h2 class="pagetitle">Archives de <?php the_time('Y'); ?></h2>
  <?php /* If this is an author archive */ } elseif (is_author()) { ?>
    <h2 class="pagetitle">Archives par Auteur</h2>
   <?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
    <h2 class="pagetitle">Archives du Blog</h2>
   <?php } ?>


     

    <?php while (have_posts()) : the_post(); ?>
    <div class="post">
            <h4 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Lien Permanent vers <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4>
        <small>Par  <?php the_author_posts_link('namefl'); ?> &bull; <?php the_time('j M, Y') ?> &bull; Catégorie: <?php the_category(', ') ?></small>
            <div class="entry">
                <?php the_excerpt() ?>
            </div>

    <?php endwhile; ?>

    <div class="navigation">
        <div class="alignleft"><?php next_posts_link('&laquo; Articles plus Anciens') ?></div>
        <div class="alignright"><?php previous_posts_link('Articles plus Récents &raquo;') ?></div>
    </div>

<?php else : ?>

    <h2 class="center">Not Found</h2>
    <?php include (TEMPLATEPATH . '/searchform.php'); ?>

<?php endif; ?>

</div>
<?php get_sidebar(); ?> <?php get_footer(); ?>

[/codebox]
(en virant les infos de header, sidebar et footer of course, je me doute)

En fait, tu voudrais utiliser une page WP et n’afficher que les articles de la catégorie X. Mais tout cela en gardant la présentation habituelle des articles WP comme tu pourrais avoir sur ta page principale WP : titre complet, article complet/chapô, ajouts de commentaires & co

Donc pas simplement une liste basique de liens qui renvoient vers les articles de cette catégorie exclusivement ?

Si j’ai bien pigé, je finis de dej avant par contre et j’edit.

Alors c’est ca « Show posts only belonging to certain categories. » :

query_posts('cat=4');

où 4 est l’ID de la catégorie des articles à afficher.

ou alors, ca revient au même

query_posts('category_name=Staff Home');

où « Staff Home » est le nom de la catégorie.

J’espère que je ne suis pas totalement à coté de la plaque.

En reprenant le code de Megamax et en excluant toutes les catégories sauf celle que tu veux, ça irait non?

[quote=« MegaMax, post:9, topic: 36686 »]En fait, tu voudrais utiliser une page WP et n’afficher que les articles de la catégorie X. Mais tout cela en gardant la présentation habituelle des articles WP comme tu pourrais avoir sur ta page principale WP : titre complet, article complet/chapô, ajouts de commentaires & co

Donc pas simplement une liste basique de liens qui renvoient vers les articles de cette catégorie exclusivement ?

Si j’ai bien pigé, je finis de dej avant par contre et j’edit.[/quote]
Je pense que tu as bien pigé : je voudrais qu’il m’affiche une page type « archives » (sur base donc du code que j’ai copié/collé dans le post ci-dessus) mais avec une catégorie unique que je choisis moi-même (en gros, le résultat devrait être l’équivalent d’un /wordpress/?cat=x avec x défini par moi-même dans le code, ici dans mon exemple la catégorie 10). Sauf que comme c’est intégré dans une page statique, il faut virer du code d’archive.php tout ce qui est déjà affiché par une page statique et ne conserver que la partie du loop qui affiche les billets.

Edit : ok, merci pour les infos, j’essaie ça dès que je rentre (là, il faut que je file) ! :slight_smile:

Petit update, j’ai integré un bout de code dans une page Wordpress :

[codebox]

<?php query_posts('cat=10'); ?>

    <?php while (have_posts()) : the_post(); ?>
    <div class="post">
            <h4 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Lien Permanent vers <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4>
        <small>Par  <?php the_author_posts_link('namefl'); ?> &bull; <?php the_time('j M, Y') ?> &bull; Catégorie: <?php the_category(', ') ?></small>
            <div class="entry">
                <?php the_excerpt() ?>
            </div>

    <?php endwhile; ?>

    <div class="navigation">
        <div class="alignleft"><?php next_posts_link('&laquo; Articles plus Anciens') ?></div>
        <div class="alignright"><?php previous_posts_link('Articles plus Récents &raquo;') ?></div>
    </div>

</div>[/codebox]

Alors, ça marche, mais ça m’affiche en plus du résumé des billets (comme une archive normale, ce que je veux), les billets complets à la suite (avec de nouveau titre et contenu). Une idée ?

Un petit screen pour vous montrer de quoi je parle :

Et je ne sais pas où, dans le code, se trouve l’instruction qui lui demande d’afficher le titre et le contenu en plus du reste (ce que je voudrais virer, donc).

Bonjour,

J’essaye d’effectuer exactement la même chose que vous mais sans succès. Avez-vous réussi à afficher uniquement l’extrait de l’article sans son contenu ? Si vous avez la solution ou des pistes, ce sera avec plaisir :))

Merci.

Il y a pas une variable $post qui se balade?

Je m’incruste aussi car je souhaite également faire un truc similaire sur mon blog : afficher la liste des articles d’une catégorie dans une page, mais juste une liste de liens pas la page qu’afficherait monsite.fr/?cat=machinchose

Je n’ai pas encore eu vraiment le temps de chercher mais si je trouve une piste je viendrai vous en faire part ici

Bonjour fser,

Effectivement, problème dans ma boucle qui affichait $post.
Merci !!

Je up car comme je le disais je souhaite réaliser la chose suivante : afficher dans une page uniquement les articles d’une catégorie, mais pas le contenu ni l’extrait des articles, juste les titres qui renvoient vers l’article complet si l’on clique dessus.

Par exemple la page que je souhaite ressemble tout simplement à ça :

[quote]Catégorie :

  • Article 1 (lien vers article 1)
  • Article 2 (lien vers article 2)
  • Article N (lien vers article N)[/quote]

L’idée est que dès qu’un article est écrit dans cette catégorie, la page en question se mette à jour automatiquement.

Il existe un moyen de faire ça simplement ?

[quote=“33aquitaine, post:16, topic: 36686”]Bonjour fser,

Effectivement, problème dans ma boucle qui affichait $post.
Merci !![/quote]

Bonjour,
Le post est un peu ancien mais je suis confronté exactement au même problème.
Pouvez vous m’expliquer comment resoudre le problème $post? N’étant un as de PHP.

Ma situation :
J’ai bien recopié le code donné un peu plus haut mais j’ai le même soucis que vous (les titres d’abord et les articles complets ensuite).
Merci de m’aider
++

Bonjour,

J’ai été confronté au même problème à savoir afficher sur la page 1 les articles catégorie 1 page 2 article 2 etc
J’ai trouvé le bout de code qui fonctionne trés bien:

<?php query_posts('cat=6,7,8&showposts=10'); while (have_posts()) : the_post(); ?> <?php $cpt+=1; endwhile; ?>
J’utilise le plug in Execphp :http://wordpress.org/extend/plugins/exec-php/
J’ai trouvé la solution ici :http://forum.webrankinfo.com/wordpress-derniers-articles-sur-page-accueil-statique-t130694.html

Merci pour ces infos qui m’aident beaucoup à faire ce que je cherche.
Pour ma part, ce que je cherche à faire c’est créer un tableau sur une page qui présente chaque poste d’une catégorie et lui associe une image …
Les catégories en question ont peu de post et je souhaite les afficher tous …
Une idée ?