Query Inside Post – Plugin WordPress pour insérer facilement une boucle dans un billet

Query Inside Post (QIP) est un plugin qui va vous permettre d'insérer une boucle personnalisée à l'intérieur d'un billet via un tout petit bout de code !

A qui s'adresse "Query Inside Post" ?

Principalement aux personnes qui font régulièrement des listings de leur billets. Le coté pratique, c'est que l'on va pouvoir créer un listing personnalisé très facilement.
Edit 22/04/08: permet aussi d'afficher une liste de liens n'importe où dans votre thème !

Installation

  1. Téléchargez le plugin
  2. Uploadez le dossier du plugin dans le dossier /wp-content/plugins/ de votre blog
  3. Activez le plugin depuis l'interface d'administration de votre blog (Plugins)

Voilà c'est installé !

Utilisation

Commencez un nouveau billet, et à l'endroit où vous voulez insérer le listing personnalisé, utilisez le code suivant:

[wlist attribut1=valeur1 attribut2=valeur2]

Il vous faut remplacer les attributs selon ce qui vous conviens. Par exemple, pour afficher une liste des 5 derniers billet contenant le tag google, placez le code suivant:

[wlist tag=google showposts=5]

Simple non ?

Et si vous voulez afficher une liste directement dans votre thème:

<?php echo qip($request,$beforelist,$afterlist,$beforeitem,$afteritem); ?>

Donc par exemple, pour afficher la liste des 10 derniers billets de la catégorie 5 dans une liste ordonnée:

<?php echo qip('cat=5&showposts=10','<ol>','</ol>'); ?>

Voici la liste des attributs possible (voir aussi query_posts()):

Par défaut, affiche la liste des 5 derniers billets sous forme de lien.

  • request: Vide par défaut. Pour les utilisateurs expérimentés, permet d'envoyer sa propre requête (ex: request="tag=google&showposts=5")
  • cat: Vide par défaut. Permet de préciser l'ID de la catégorie (ex: cat=5 ou cat="5,6,7" ou cat=-5)
  • category_name: Vide par défaut. Permet de préciser le nom de la catégorie (ex: category_name="Web Design")
  • tag: Vide par défaut. Permet de préciser le nom (slug) du tag (ex: tag=vie-personelle ou tag="vie-personelle,photos" ou tag="vie-personelle+photos")
  • order: "desc" par défaut. Permet de préciser l'ordre de tri (ex: order=asc ou order=desc)
  • orderby: "post_date" par défaut. Permet de préciser le paramètre de tri (ex: orderby=post_title ou orderby=post_date ou orderby=random)
  • author: Vide par défaut. Permet de préciser l'ID de l'auteur (ex: author=1 ou author=1,2 ou wlist author=-1)
  • author_name: Vide par défaut. Permet de préciser le nom de l'auteur (ex: author_name="Julien")
  • showposts: 5 par défaut. Permet de préciser le nombre d'éléments a retourner (ex: showposts=10)
  • offset: Vide par défaut. Permet de préciser l'offset (ex: offset=3)
  • beforelist: <ul class="wlist"> par défaut. Permet de préciser la tag se trouvant au début de la liste (ex: beforelist="<ol>")
  • afterlist: </ul> par défaut. Permet de préciser la tag se trouvant à la fin de la liste (ex: afterlist="</ol>")
  • beforeitem: <li> par défaut. Permet de préciser la tag se trouvant au début de chaque élément (ex: beforeitem="<li><p>")
  • afteritem: </li> par défaut. Permet de préciser la tag se trouvant à la fin de chaque élément (ex: afteritem="</p></li>")

Chaque attribut est facultatif.
On peut évidement cumuler les attributs (ex: tag=google showposts=5)
/! N'utilisez pas l'attribut "cat" en même temps que l'attribut "tag" (bug wordpress), c'est ou l'un ou l'autre

Vous pouvez tout à fait insérer plusieurs listes, avec des paramètres différents, dans le même billet.

Quelques exemples

Par exemple, vous administrez un blog "People" et vous voudriez faire un article résumé sur la "Star Academy" (oh, le beau sujet !). Et évidement vous voudriez afficher tous vos articles parlant de Bertrand et de Lucie ...

Tous connaitre sur Bertrand:
[wlist tag=Bertrand showposts=50]

Et tout sur Lucie:
[wlist tag=Lucie showposts=50]

Vive la Star Academy

Enfin voilà, vous avez compris le principe !

Conclusions

Si vous utilisez vraiment beaucoup de listes dans vos billets, vous devriez envisager d'utiliser le plugin wp-cache pour WordPress. Car celà engendre pas mal de requêtes qui peuvent se révéler gourmande en ressources CPU.

Vous pouvez évidement personnaliser la manière dont s'affiche la liste en éditant le fichier qip.php. Gardez juste en tète que ça affectera toutes vos listes !

Je n'ai pas vraiment le temps ni les moyens d'approfondir ce plugin, mais si un développeur motivé passe dans le coin, voici les fonctions qu'il serait bon d'ajouter:

  • ajout d'une page d'administration
  • possibilité de créer plusieurs templates de liste (via la page administration)
-----

Articles relatifs

  • J’ai un problème avec l’ouverture du fichier qip.zip.

    (j’ai un avertissement comme quoi le fichier n’est pas valide)

  • Je viens d’installer le plugin et en le testant, j’ai constaté qui si j’affichais une liste d’article, alors les liens d’édition et de commentaire de en bas de l’article pointent sur le dernier article de la liste et non sur l’article contenant cette liste (si vos tests ont été fait avec le skin de ce site, il n’ont effectivement pas pu mettre ce problème en lumière puisque vous avez placé ces liens en haut de message).

    Apparemment l’appel à sc_wlist écrase la variable globale $post à laquelle il est fait référence quand on appelle la fonction the_post().

    Une façon (pas forcément la plus élégante mais bon, ça a le mérite de marcher) semble être de sauvegarder la valeur de cette variable en début de fonction et la remettre en fin de fonction.

    Ce dui donne :

    – en début de fonction (avant le extract), ajouter :

    global $post;
    $tempPost = $post;

    – en fin de fonction (avant le return), ajouter :

    $post = $tempPost;

    De cette manière on peut continuer à afficher les liens en bas des articles.

  • k-ny

    @StefB23
    Ton problème est résolu ?

    @Darathor
    Ah décidément, je pensais ètre débarrassé de ce bug, bon j’intègre ta « bidouille » dans la prochaine mise à jour (qui va arrivé dans la journée ou demain). Merci 😉

  • wahou

    Super ton plugin merci !
    C’est exactement ce dont j’avais besoin.
    Bonne continuation

  • charpiot sébastien

    Bonjour, votre plugin est très efficace et va peut-être me permettre de résoudre mon problème sur la page d’accueil de mon site.
    Je cherchais effectivement une solution pour afficher plusieurs posts sur un seul post (accueil). L’utilisation d’une liste et de tag est très pratique et judicieuse. Par contre dans les attributs disponibles (tag, author…) comment peut-on inclure au niveau de la liste un résumé de l’article avec par exemple 125 caractères + « … » + éventuellement une vignette de la photo de l’article.
    Avez-vous une idée ?

    Par avance merci

  • k-ny

    @sébastien

    Pour afficher du contenu et +, il faut que tu modifie légèrement le plugin.

    Dans la fonction « qip », modifie la ligne :

    $retour .= $beforeitem.'<a href ...

    Il te suffit d’utiliser les marqueurs que tu veux: http://codex.wordpress.org/fr:Marqueurs_de_Modele

    Attention toutefois qu’il s’agit d’utiliser les marqueurs pour qu’ils renvoient une chaine et non un « echo » 😉

  • Pingback: Query inside Post | idiothèque.com()

  • Votre plug-in permet-il de rechercher des images dans les posts et tout le contenu d’un site web?

  • Pingback: 五毒 » Blog Archive » Wordpress随机插件()

  • Pingback: 50+ Wordpress随机插件,或许有一些适合你 | Idiigo.com()

  • jf

    une chose bien étrange ce produit…

    j’ai mis la boucle (5 derniers articles pour un tags) après la balise “more” d’un de mes articles…
    à l’affichage no problem sauf que dans le flux rss Feedburner et dans les email feedburner adressés à partir de ce flux, le derniers article de la boucle remplace l’article courant (sauf le titre)…?
    (j’ai téléchargé la dernière version ci dessus)

  • Bonjour, existe t’il un moyen d’EXCLURE un tag ?
    Par exemple si je veux tous les posts qui contiennent tag1 SANS tag2 ? J’imagine qu’on ne peut pas utiliser le symbole « – » puisqu’il est utilisé dans les slugs… Ce serait vraiment une fonctionnalité intéressante.

  • Alexis Chatougri

    Ce plug-in est merveilleux. HALLELUTRA !

    C’est exactement ce que je cherche depuis trèèèèès longtemps maintenant.

    Merci beaucoup messire

  • Pingback: mesky blogs » Blog Archive » 50+ Wordpress随机插件()

  • Pingback: Wordpress随机插件大全 | 电脑厨房()

  • Gordie

    Sous 2.6 (je ne sais pas pour les autres), l’activation du plugin implique que les pages ne peuvent plus être « découpées » !!! ()

    Comment éviter ceci ? J’en ai besoin….
    Super plugin sinon !

  • Pingback: WordPress天下 » Blog Archive » 50个Wordpress随机插件()

  • Pingback: 50+ Wordpress随机插件()

  • AJ

    The plugin doesn’t seem to want to list items if there is a space in the tag. eh If I use the tag Human Resources, it won’t grab the post, but if I use HR it does. I know the wordpress recognises multi-word tags as the only requirement is that they are comma separated. Does your plugin only work with single word tags, or is there a tweak I am missing to make it use multi-word tags.
    Merci
    AJ

  • Salut, ton plugin ne marche plus 🙁
    Je suis sous wordpress 2.8.2, il y a t-il une solution ?
    Merci beaucoup !

  • Je déterres le post, pour une question assez bête en fait (j’espère que j’ai tout bien lu… ).

    Je suis photographe de concerts. Je fais régulièrement un billet de rappel des concerts des mois passés.

    Y a-t-il moyen d’afficher par exemple une liste de tous les billets de septembre (quelque soit le nombre de billets), d’une catégorie précise (ici « photos »).

    Merci d’avance.

  • Pingback: Query Inside Post | Best Plugins - wordpress – widgets – plugin 2012()