Utiliser la fonction query_posts pour personnaliser l’affichage de vos articles

Publié par Fred Le

 

Aujourd’hui nous allons voir comment fonctionne la fonction query_posts, qui nous servira dans d’autres tutoriels.

Tout d’abord a quoi peu bien nous servir cette fonction ?

La fonction query_posts peu nous servir a personnalisé une page d’accueil par exemple :

Admettons qu’ont veuillent insérer plusieur boucle (loop) différente  sur notre page d’accueil de notre site :

Un entête avec une boucle contenant les cinq articles de la catégorie Nouveauté.

Ce qui nous donneraient avec la fonction query_posts :


// début de la boucle avec la fonction query_post

<?php query_posts('cat=2&showposts=5'); while (have_posts()) : the_post(); ?>

<?php the_content(); ?>// affiche du contenu de votre article

<?php endwhile; ?> // fermeture de la boucle

Ici dans cette boucle j’ai indiqué a la fonction query_post que je voulais afficher la catégorie Nouveauté qui a pour identifiant  2 (cat=2) et (&) les 5 articles récent de cette catégorie (showpost=5). Voila un exemple simple de la fonction query_posts elle peu faire bien plus de choses voyons ca en détail.


Query_posts et les catégories de vos articles.

Cat et category_name pour afficher les catégories désirer.

query_posts("cat=2"); //Affiche  les articles de la catégorie qui a pour identifiant 2

query_posts("cat=-2"); //Retire la catégorie qui a pour identifiant 2

query_posts("category_name=nouveaute"); //Affiche les articles de la catégorie "nouveaute"

query_posts("cat=1,2,4"); //Affiche un série de catégories qui ont pour identifiant 1,2,4

A noter dans le code ci-dessus vous avez le choix avec l’identifiant de la catégorie, vous avez l’ID qui se récupère dans la barre d’adresse :

http://…../edit-tags.php?action=edit&taxonomy=category&tag_ID=2&post_type=post

Ou

L’identifiant normalisé du nom de votre catégorie qui est obtenu lorsque vous créer une catégorie exemple :

Nouveauté = nouveaute. Dans se cas ont utilisera category_name=nouveaute. L’identifiant normalisé du nom de votre est plus pratique si par exemple vous créer une page d’accueil avec plusieurs boucle cela vous permet de vous repérez plus facilement dans le code ou chaque catégorie est afficher.


Afficher un article unique

P= et name va permettre l’affichage d’un seul article

query_posts('p=10'); //Affiche l'article avec l' identifiant 10

query_posts('name=titre-de-mon-article'); //Affiche l'article avec identifiant normalisé "titre-de-mon-article"

Idem que pour les catégories ont pourra utiliser l’identifiant :

http://…./post.php?post=692&action=edit&message=10

Ou

L’identifiant normalisé qui est le titre de votre article il est obtenu lors de l’édition de l’article sous le titre vous avez permalien : http://…/titre-de-mon-article et l’identifiant sera : name=titre-de-mon-article


Afficher une page unique

Page et pagename va permettre l’affichage d’une seule page

query_posts("page_id=4"); //Affiche la page avec l' identifiant 4

query_posts("pagename=contact"); //Affiche la page avec l’identifiant normalisé "contact"

Mais quel intérêt a affiché une page ? Cela pourrait servir dans le cas ou voulez par exemple afficher un formulaire de contact visible directement en page d’accueil.


Déterminer le nombre d’article a affiché

Showpost et offset va permettre d’afficher le nombre d’article désiré.

query_posts('showposts=7'); //Affiche les 7 premiers articles

query_posts('offset=2');//On exclu les 2 premiers article

Showpost va indiquer que vous voulez afficher que 7 articles d’une catégorie, il  affichera les articles par ordre de parution vous pouvez modifier aussi l’ordre d’affichage :

query_posts('orderby=post_date&order=desc')

orderby modifie l’ordre d’affichage :

post_date – Trier par date de poste (qui est la valeur par défaut).

post_author – Trier par l’auteur.

post_title – Trier par titre.

post_modified – Trier par date de modification.

post_menu_order – Trier par ordre des menus .

post_parent – Trier par parent.

post_id – Trier par ID.

post_rand – un ordre aléatoire.

Order ici ont affichera les articles par ordre décédant  order=desc pour les affiché dans un ordre ascendant ont utilisera order=asc qui est la valeur par défaut.

vous pouvez obtenir plus d’information sur le codex wordpress

Offset permet de retirer des articles que vous vous pas affichez, prenons  un exemple :

Vous avez créé une page pour une catégorie d’articles en entête vous voulez affichez le dernier article de cette catégorie et en dessous vous voulez affichez une liste de dix articles de la même catégorie :


La boucle pour afficher le dernier article de la catégorie sera :

<?php query_posts('cat=2&showposts=1'); while (have_posts()) : the_post(); ?>// début de la boucle

<?php the_content(); ?>// affiche du contenu de votre article

<?php endwhile; ?> // fermeture de la boucle

La boucle pour afficher les dix autres articles de la même catégorie sera :

<?php query_posts('cat=2&showposts=10&offset=1'); while (have_posts()) : the_post(); ?>// début de la boucle

<?php the_content(); ?>// affiche du contenu de votre article

<?php endwhile; ?> // fermeture de la boucle

Dans la première boucle j’ai combine cat=2 qui est l’identifiant de ma catégorie  et(&) showpost=1 qui indique que je veux qu’un seul article (le dernier publier dans la catégorie).

Dans ma deuxième boucle j’ai combiné cat=2 qui est l’identifiant de ma catégorie  et(&) showpost=10 qui indique que je veux afficher dix articles et(&) offset=1 retire le premier article (( le dernier publier dans la catégorie).

Voila a quoi peu servir la fonction quey_post.


Voici une liste des fonction query_posts et que vous pouvez combiné selon vos besoins.

query_posts("tag=voiture"); //Affiche les articles qui ont le tag (mot clé) "voiture"

query_posts("tag=voiture,vert"); //Affiche les articles qui ont le tag (mot clé) "voiture" OU "vert"

query_posts("tag=voiture+vert+marque"); //Affiche les articles qui contiennent les 3 tags( mots clé)

query_posts("author_name=auteur-m,admin"); //Affiche les articles de l'auteurs "auteur-m" et "admin"

query_posts("author=6"); //Affiche les articles de l'auteur avec l'identifiant 6

query_posts("author=-8"); //Exclu les articles de l'auteur avec l'identifiant 8

query_posts("hour=01"); //Affiche les articles qui ont été publiés pendant l'heure 1

query_posts("minute=30"); //Affiche les articles qui ont été publiés pendant la 30ème minute

query_posts("second=07"); //Affiche les articles qui ont été publiés pendant la 7ème seconde

query_posts("day=1"); //Affiche les articles qui ont été publiés le 1er jour de la semaine

query_posts("monthnum=1"); //Affiche les articles qui ont été publiés pendant le 1er moi

query_posts("year=2010"); //Affiche les articles qui ont été publiés pendant l'année 2010

query_posts("posts_per_page=10"); //Affiche 10 articles par page

Conclusion

La fonction query_posts est très utile si ont veut personnaliser son site  créer une page d’accueil, une page pour une catégorie d’article…. et bien d’autre, et sa vous permet de vous initiez au codage de wordpress et a sont fonctionement.

Mots clés: , ,





90 Commenataires pour :

“Utiliser la fonction query_posts pour personnaliser l’affichage de vos articles”

  1. Baron dit :

    Salut tout le monde, je trouve votre article vraiment sympa, je viens par exemple de trouver un bout de code qui m’aide beacoup « query_posts(‘page_id=x’).
    Cependant, est il possible d’afficher plusieurs page sur la page d’acceuil?

    • Fred dit :

      Bonjour Baron,
      Pour afficher plusieurs pages il vous pouvez procéder comme ceci :

       query_posts('page_id=4,5,6'); </code> pour affichez le titre de chaque page :<code> <?php wp_list_pages('include=5,9,23&title_li=') ; ?>
  2. Baron dit :

    Merci,
    Lorsque j’utilise « query_posts(page_id=’4,5,6′) », les excerpts disparaissent et ce sont les textes entiers que j’obtiens à la place.
    Donc la mention « Lire la suite » aura aussi disparu.

    • Fred dit :

      Essayer d’Ajouter cette fonction dans votre fichier function.php de votre thème :

       add_action( 'init', 'my_add_excerpts_to_pages' );
      function my_add_excerpts_to_pages() {
           add_post_type_support( 'page', 'excerpt' );
      }
      
  3. darknote dit :

    Bonjour,
    on peut mettre the_excerpt à la place de the_content.
    mais du coup où on met « the_post_thumbnail » pour avoir une image mis en « image à la une » ?
    Et est-ce possible ‘avoir une image et un extrait pour le 1er article et que les 4 autres juste un extrait sans image?
    MErci

    • Fred dit :

      Bonsoir Darknote,
      Oui vous pouvez mettre the_excerpt à la place de the_content.
      Vous pouvez placer vos miniatures comme ceci :

      <?php query_posts('cat=0&showposts=4'); while (have_posts()) : the_post(); // début de la boucle ?>
      
      <?php echo get_the_post_thumbnail($post->ID, 'id-thumb'); // affichage de la miniature ?>
      
      <h2 class="title"><?php the_title(); // affichage du titre?></h2>
      
      <?php the_excerpt(); // affichage de l'extrait ?>
      
      <?php endwhile; // fin de la boucle ?>
      

      Si vous ne voulez pas d’image pour certains articles il vous suffit de ne pas mettre d’image à la une.

      J’ai fais un tutoriel la dessus : Comment créer une liste d’articles avec miniatures

  4. darknote dit :

    Bonjour,
    merci pour le code, je pensais qu’il y avait un code spéciale pour ne pas avoir des images à la une et non pas simple ne pas mettre cette fonction.
    par exemple, ce thème http://izithemes.com/demo/Exciter/
    les catégories Music , Health, General, Sports fonctionnent comme ça ?
    Merci

    • Fred dit :

      Bonjour,
      Dans le cas de votre exemple on utilise deux boucles une avec la miniature, le titre l’extrait et la deuxième juste avec le titre le l’article en utilisant l’argument offset qui vas retirer le dernier article paru dans la catégorie pour afficher à partir de l’avant-dernier article publié.
      Première boucle :

      <?php query_posts('cat=0&showposts=1'); while (have_posts()) : the_post(); // début de la boucle ?>
      
      <?php echo get_the_post_thumbnail($post->ID, 'id-thumb'); // affichage de la miniature ?>
      
      <h2 class="title"><?php the_title(); // affichage du titre ?></h2>
      
      <?php the_excerpt(); // affichage de l'extrait ?>
      
      <?php endwhile; // fin de la boucle ?>
      
      <?php wp_reset_query(); ?>
      

      Deuxième boucle :

      <?php query_posts('cat=0&showposts=4&offset=1'); while (have_posts()) : the_post(); // début de la boucle ?>
      
      <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php _e('Lien vers'); ?> <?php the_title_attribute(); ?>" >
      <h2><?php the_title(); // affichage du titre avec le lien ver l'article ?></h2>
      </a>
      
      <?php endwhile; // fin de la boucle ?>
      
      <?php wp_reset_query(); ?>
      

      Et surtout ne pas oublier de mettre la fonction wp_reset_query a chaque fin de boucle elle permet de rétablir les valeurs par défaut pour ne pas avoir de bug dans les autres boucles.

      • darknote dit :

        D’accord, je ne connaissais pas cet astuce, merci beaucoup!!
        je suis sûr que c’est des codes qui pourraient servir à plusieurs personnes, quand je vois le nombre de gens qui veulent un thème magazine, ce code va dans ce sens, merci beaucoup

  5. JF dit :

    Bonjour,

    Je voudrais faire un truc très simple :

    Jusque là, pas de soucis …. La grande question est : ou est ce que ce code doit être mit pour qu’il puisse estre afficher sur une seule page ?

    Merci

  6. JF dit :

    Pardon mon code m’a pas été pris en compte .
    Voici le bout de code :

    <?php query_posts('cat=0&showposts=4'); ?>

    Merci

    • Fred dit :

      Bonjour JF,
      Tous d’abord pour afficher des articles sur une seule page vous devez créer une page template , faite un copier-coller du fichier page.php de votre thème puis renommer le exemple page-macategory.php ensuite il faut placer le nom de la page template dans l’en-tête du fichier ( comme ci-dessous) et après supprimer la boucle de la page et ajouter votre boucle(query_post) a l’intérieur de votre balise html comme ceci :

      <?php
      /**
       * Template Name: Ma catégorie
       *
       *
       */
      
      get_header(); ?>
      
      <div id="container">
      <div id="content" role="main">
      <!-- début de la boucle avec la fonction query_post -->
      
      <?php query_posts('cat=0&showposts=4'); while (have_posts()) : the_post(); ?>
      <?php the_title();?> <!-- titre de l'article -->
      <?php the_excerpt(); ?> <!-- affiche du contenu de votre article -->
      
      <?php endwhile; ?> <!-- fermeture de la boucle -->
                  
      </div><!-- #content -->
      </div><!-- #container -->
      
      <?php get_sidebar(); ?>
      <?php get_footer(); ?>
      

      Après vous avez juste a sélectionner le modèle page-macategory quant vous éditez une page.

      • JF dit :

        Bonjour Fred,
        Merci beaucoup, ça marche super bien.

        Tout fois j’aurais une autre question maintenant que j’affiche juste un article .
        Existe-t-il un résumé ou alors un modèle pour utiliser le « sidebar-squeeze » de buddypress.

        J’ai bien noté que ça marche selon la forme

        <div>
        
             <div id="content">
             ma parti de gauche
             </div>
        
             <div id="sidebar-squeeze">			
        	<div id="main-column">
        	</div>
        	<?php get_sidebar( 'buddypress' ); ?>
             </div>
        
        </div>
        

        Sauf que visiblement la feuille de style spécifie des tailles et position entre la barre latérale et le contenu.
        Je me retrouve avec ma barre lattéral en dessous du ma partie gauche . en revanche la sidebar est bien à droite et de la bonne largeur …. mais en desous du text au lieu d’être à coté.

        Si tu avais une idée de l’endroit ou j’ai fait une erreur .

        Merci
        JF

  7. JF dit :

    Problême résolu,

    il faut ne faut pas utiliser ID= »sidebar-queeze ».

    <div>
    
         <div id="content">
         ma parti de gauche
         </div>
    
         <div> <!-- C'est ici que ça ne marchait pas -->			
    	<div id="main-column">
    	</div>
    	<?php get_sidebar( 'buddypress' ); ?>
         </div>
    
    </div>
    

    Voila merci pour ton aide
    JF

  8. skoop dit :

    Hello et bravo pour le tuto, c clair !
    Je cherche un code pour afficher sur ma page article, des articles aléatoire de la même catégorie. J’ai beau tourner dans tous les sens j’y arrive pas …

    Merci

    • Fred dit :

      Bonjour Skoop,
      Merci 😉
      Vous avez la boucle toute prête dans ce tuto : Comment utiliser la requête WP query pour l’affichage de vos articles , avec un tableau d’arguments.

      • skoop dit :

        Désolé mais je ne trouve pas.

        en fait j’aimerai que « cat » soit variable (en fonction de la catégorie de l’article) et non pas fixe (ex : 2). Et justement je n’arrive pas à appeler cette variable…

        	articles similaires : 
        	
        <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); $category = get_the_category($post->ID); echo $category[0]->cat_name; $thumb = get_post_meta($post->ID, 'thumb', true); if ($thumb == ''); ?>
        	
        	<?php query_posts(array('orderby' => 'rand', 'showposts' => 4, 'category_name=>'$category;'')); ?>
        	
        	<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        	
        <?php endwhile; ?><?php endif; ?>
        

        jsuis pas une flèche en prog …

        • Fred dit :

          OK j’avais pas compris ca désolé,
          Votre code a des fautes de syntaxe et la fonction query_post n’est pas très adapter pour des boucles complexe comme celle que vous voulez mais la base était assez bien partie , ont va plutôt utiliser wp_query qui va permetre d’identifier l’article et sa catégorie et ensuite d’interprèté une boucle pour affiché les articles similaire par catégorie avec un ordre aléatoire . il faut placer le code après la boucle de l’article principale.

          Code :

          <?php // Code a insérer après la boucle principal de l'article  
          $categories = get_the_category($post->ID);
          if ($categories) {
          	$category_ids = array();
          	foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
          
          	$args=array(
          		'category__in' => $category_ids, // catégorie de l'article 
          		'post__not_in' => array($post->ID), // Id de l'article
          		'showposts'=>5, // Nombre d'article
          		'orderby' => 'rand', // Ordre des articles 
          		'caller_get_posts'=>1 // on retire l'article principal pour ne pas le dupliqué
          	);
          
          
          $related_query = new WP_Query($args);
          
          	if ($related_query->have_posts()) {
          	?>
          <?php // Boucle avec les éléments (title,excerpt...) ?>
          		<ul>
          
          			<?php
          			while ($related_query->have_posts()) : $related_query->the_post();
          			?>
          				<li>
          					<a href="<?php the_permalink() ?>" > <?php the_title();?> </a>
          				</li>
          			<?php
          			endwhile;
          			?>	
          
          		</ul>
          <?php // Fin de la boucle ?>
          <?php } 
          	wp_reset_query(); // Reset de la boucle important !
          }
          ?>
          

          A l’interrieur de la boucle vous ajouter les marqueurs et fonctions que vous voulez comme dans une boucle avec query_post (vignette , titre,extrait,date…)

  9. kolors dit :

    salut merci pour tes explications c’est très bien expliqué.

    comme le dernier post j’ai une page category.php dans mon template qui affiche des articles de la catégorie jusque là tout est ok.

    Problème : je dois afficher en 1er des articles qui appartiennent à cette catégorie (et à plusieurs autres catégories) MAIS qui doivent être identifiés soit par un tag et/ou une sous-rubrique ce serait les « indispensables » de cette catégorie (je ne vois pas trop comment procéder) dans cette page category.php.

    ces articles sont donc dans plusieurs rubriques et sous-rubriques mais ne sont pas des « indispensables » dans toutes alors je ne sais pas ce qui est le mieux adapté le tag ou la catégorie ?

    la solution que tu proposes plus hait avec wp_query me semble proche de ce que je veux faire mais je ne sais pas comment l’écrire.

    dans mon template category.php j’ai ceci :

    <div class="entry-link" id="post-" >
    <a href="" rel="bookmark" title="">

    <?php
    if ( has_post_thumbnail() )
    the_post_thumbnail();
    else
    echo '';
    ?>

    <!-- #post- .four.columns -->

    si j’insère une sous-catégorie « indispensables » pour chaque catégorie et sous-catégorie crois-tu que je peux avec wp_query récupérer comme actuellement mes articles de la catégorie dynamiquement en mettant dans une boucle une règle pour afficher en 1er dans la liste ceux qui sont dans « indispensables » pour un article qui est dans 3 catégories et 2 sous-catégories ?

    • Fred dit :

      Salut Kolors,
      Le plus simple pour récupérer tes articles dans des catégories différentes est d’utiliser les mots clé que tu as attribués pour chaque article dans la boucle ci-dessous j’ai utilisé un tableau d’arguments ( tu pourras si besoin définir un affichage plus avancé) pour query_post dans se tableau tu peu mettre un ou plusieurs mots clés et choisir les catégories concernerez ( cat => ’25,32’, ) et l’ordre d’affichage, sans avoir besoin de créer une autre catégorie pour regroupé tes articles.

      <?php 
      // tableau d'arguments
      $args = array(
      	'cat' => 0, // identifant de la catégorie 0 reprend toute les catégories
      	'tag' => 'rouge,vert', // mot clé des articles a récupérer
      	'order' => 'ASC' // ordre d'affichage
      );
      // tableau d'arguments fin
      
      // Début de la boucle
      query_posts($args); while (have_posts()) : the_post(); ?>
      
      <a href="<?php the_permalink();?>"><?php the_title();?></a>
      <?php // Thumbnail
      if ( has_post_thumbnail() )
      the_post_thumbnail();
      else
      echo '';
      // Thumbnail fin ?>
      <?php the_excerpt(); // extrait ?> 
      
      <?php endwhile;
      // fin de la boucle 
      ?> 
      
  10. Alex dit :

    Super ! J’ai une question
    Dans mon theme lors d’une recherche il m’affiche automatiquement un extrait de mes articles mais en laissant tout les tags en dessous. Ca me gene car j’ai beaucoup de tag… J’aimerais les enlever et ne les laisser dans le bas de mon article integral. HELP !

    • Fred dit :

      Bonjour Alex,
      Pour modifier les résultats de recherches sur votre blog vous devez éditer le fichier search.php et remplacer the_excerpt par the_content et vous pourrez supprimer les tags qui vous gênent.

      Si vous n’avez pas le fichier search.php dans votre thème, vous pouvez le créer et ajouter la boucle de que vous avez pour vos pages.

  11. Gwen dit :

    Merci beaucoup pour ces explications. Je me demandait comment ajouter les 5 derniers article de 5 catégories sur ma home page? Dois-je ajouter 5 fois le code?

    <?php query_posts('cat=1&showposts=5'); while (have_posts()) : the_post(); ?>
    <?php query_posts('cat=2&showposts=5'); while (have_posts()) : the_post(); ?>
    <?php query_posts('cat=3&showposts=5'); while (have_posts()) : the_post(); ?>
    <?php query_posts('cat=4&showposts=5'); while (have_posts()) : the_post(); ?>
    <?php query_posts('cat=5&showposts=5'); while (have_posts()) : the_post(); ?>

    Merci^^

    • Fred dit :

      Bonjour Gwen,
      Oui c’est bien ça, mais il faudra ajouter wp_reset_query() ; à chaque fin de boucle pour éviter des bugs d’affichage 😉 :

      <?php query_posts('cat=2&showposts=1'); while (have_posts()) : the_post(); // début de la boucle ?>
      
      <?php the_content(); // affiche du contenu de votre article ?>
      
      <?php endwhile; // fermeture de la boucle ?> 
      <?php  wp_reset_query(); // a chaque fin de boucle(si vous avez plusieurs sur la même page)?>
      
  12. Gwen dit :

    Merci beaucoup pour ce retour^^, je rencontre un souci de duplicate d’article:
    Screen:
    http://nsa34.casimages.com/img/2013/04/08/13040805445856835.jpg

    <?php get_header(); ?>
    
    <div id="content">
    
    	<div id="contentleft">
    	
    		<div class="postarea2">
    	
    		
    <h1>Amusez-vous avec jeux-fr.eu !</h1><br />
    <?php if ( function_exists( "easingsliderlite" ) ) { easingsliderlite(); } ?>
    
    <div id="imgentete" style="float: left;"><p>Jouez à des <strong>jeux en ligne</strong> gratuits ou <strong>téléchargez des jeux</strong> sur votre PC. <br />Choisissez parmi les jeux à télécharger, en ligne, Kid's ou puzzle.</p></div>
    <ul>
    	<li><strong>Jouer sans attendre</strong></li>
    	<li><strong>Pas de publicité</strong> dans les jeux</li>
    	<li><strong>Testez</strong>, <strong>Notez</strong> et <strong>Commentez</strong> les jeux. <span style="text-decoration: underline;"><a title="Devenir membre" href="http://jeux-fr.eu/wp-login.php?action=register">Devenez membre</a></span></li>
    </ul><br /><h3>Les nouveaux jeux PC ajoutés cette semaine : </h3>
    
    			
    			<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    			
    
    			
    		
    			 <div class="articlehome">
    			<?php if(function_exists('wp_gdsr_render_article')){ wp_gdsr_render_article(); } ?>
    		<?php query_posts('cat=5&showposts=5'); while (have_posts()) : the_post(); // début de la boucle ?>
    
    <?php the_excerpt(); // affiche du contenu de votre article ?>
    
    <?php endwhile; // fermeture de la boucle ?> 
    <?php  wp_reset_query(); // a chaque fin de boucle(si vous avez plusieurs sur la même page)?>
    
    <?php query_posts('cat=9&showposts=5'); while (have_posts()) : the_post(); // début de la boucle ?>
    
    <?php the_excerpt(); // affiche du contenu de votre article ?>
    
    <?php endwhile; // fermeture de la boucle ?> 
    <?php  wp_reset_query(); // a chaque fin de boucle(si vous avez plusieurs sur la même page)?>
    
    <?php query_posts('cat=739&showposts=5'); while (have_posts()) : the_post(); // début de la boucle ?>
    
    <?php the_excerpt(); // affiche du contenu de votre article ?>
    
    <?php endwhile; // fermeture de la boucle ?> 
    <?php  wp_reset_query(); // a chaque fin de boucle(si vous avez plusieurs sur la même page)?>
    			
    
    			</div>
    			
    			<?php endwhile; else: ?>
    			
    			<p><?php _e('Sorry, no posts matched your criteria.'); ?></p><?php endif; ?>
    
    
    		
    		</div>
    				
    	</div>
    	
    
    		
    </div>
    	
    <div id="contentrighthome">
    
    <script type="text/javascript"><!--
    google_ad_client = "ca-pub-8971473270297083";
    /* 300x250, date de création 04/06/10 */
    google_ad_slot = "6161001445";
    google_ad_width = 300;
    google_ad_height = 250;
    //-->
    </script>
    <script type="text/javascript"
    src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script>
    </div>
    <!-- The main column ends  -->
    
    <?php get_footer(); ?>
    

    Qu’est ce qui peu bien provoquer cela? Merci pour ton aide, je sais que ce n’est pas un forum et je ne t’en voudrais pas de ne pas pouvoir m’aider 😉
    Merci^^

    • Fred dit :

      Gwen,
      Vous avez mis plusieurs boucles dans une ! je vous ait corriger votre code en marquant les éléments a supprimé 😉

      <?php get_header(); ?>
      
      <div id="content">
      
      	<div id="contentleft">
      	
      		<div class="postarea2">
      	
      		
      <h1>Amusez-vous avec jeux-fr.eu !</h1><br />
      <?php if ( function_exists( "easingsliderlite" ) ) { easingsliderlite(); } ?>
      
      <div id="imgentete" style="float: left;"><p>Jouez à des <strong>jeux en ligne</strong> gratuits ou <strong>téléchargez des jeux</strong> sur votre PC. <br />Choisissez parmi les jeux à télécharger, en ligne, Kid's ou puzzle.</p></div>
      <ul>
      	<li><strong>Jouer sans attendre</strong></li>
      	<li><strong>Pas de publicité</strong> dans les jeux</li>
      	<li><strong>Testez</strong>, <strong>Notez</strong> et <strong>Commentez</strong> les jeux. <span style="text-decoration: underline;"><a title="Devenir membre" href="<a href="http://jeux-fr.eu/wp-login.php?action=register">Devenez" rel="nofollow">http://jeux-fr.eu/wp-login.php?action=register">Devenez</a> membre</a></span></li>
      </ul><br /><h3>Les nouveaux jeux PC ajoutés cette semaine : </h3>
      
      
      <!-- a supprimer -->
      			
      			<?php  //  erreur : if (have_posts()) : while (have_posts()) : the_post(); ?>
      			
      <!-- a supprimer -->
      			
      		
      		<div class="articlehome">
      			<?php if(function_exists('wp_gdsr_render_article')){ wp_gdsr_render_article(); } ?>
      <?php query_posts('cat=5&showposts=5'); while (have_posts()) : the_post(); // boucle 01 ?>
      
      <?php the_excerpt(); ?>
      
      <?php endwhile; // fermeture de la // boucle 01  ?> 
      <?php  wp_reset_query(); // reset?>
      
      <?php query_posts('cat=9&showposts=5'); while (have_posts()) : the_post(); // boucle 02 ?>
      
      <?php the_excerpt(); ?>
      
      <?php endwhile; // fermeture de la boucle 02 ?> 
      <?php  wp_reset_query(); ?>
      
      <?php query_posts('cat=739&showposts=5'); while (have_posts()) : the_post(); // boucle 03 ?>
      
      <?php the_excerpt(); ?>
      
      <?php endwhile; // fermeture de la boucle 03 ?> 
      <?php  wp_reset_query(); // reset)?>
      			
      
      			</div>
                  
                  
      <!-- a supprimer -->			
      			<?php // erreur endwhile; else: ?>
      			
      			<p><?php // erreur _e('Sorry, no posts matched your criteria.'); ?></p><?php // erreur endif; ?>
      
      <!-- a supprimer -->
      		
      		</div>
      				
      	</div>
      	
      
      		
      </div>
      	
      <div id="contentrighthome">
      
      <script type="text/javascript"><!--
      google_ad_client = "ca-pub-8971473270297083";
      /* 300x250, date de création 04/06/10 */
      google_ad_slot = "6161001445";
      google_ad_width = 300;
      google_ad_height = 250;
      //-->
      </script>
      <script type="text/javascript"
      src="<a href="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt" rel="nofollow">http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt</a>;
      </script>
      </div>
      <!-- The main column ends  -->
      
      <?php get_footer(); ?>
      
  13. Gwen dit :

    Merci! J’ai un dernier soucis, mais articles ne sont plus alignés..la fonction n’est plus prise en compte:

    { width : 310px; display : inline; float : left; }

    Merci^^encore^^

    • Fred dit :

      Pas de problème 😉 essayer comme ça :

      <?php get_header(); ?>
      
      <div id="content">
      
      	<div id="contentleft">
      	
      		<div class="postarea2">
      	
      		
      <h1>Amusez-vous avec jeux-fr.eu !</h1><br />
      <?php if ( function_exists( "easingsliderlite" ) ) { easingsliderlite(); } ?>
      
      <div id="imgentete" style="float: left;"><p>Jouez à des <strong>jeux en ligne</strong> gratuits ou <strong>téléchargez des jeux</strong> sur votre PC. <br />Choisissez parmi les jeux à télécharger, en ligne, Kid's ou puzzle.</p></div>
      <ul>
      	<li><strong>Jouer sans attendre</strong></li>
      	<li><strong>Pas de publicité</strong> dans les jeux</li>
      	<li><strong>Testez</strong>, <strong>Notez</strong> et <strong>Commentez</strong> les jeux. <span style="text-decoration: underline;"><a title="Devenir membre" href="<a href="http://jeux-fr.eu/wp-login.php?action=register">Devenez" rel="nofollow">http://jeux-fr.eu/wp-login.php?action=register">Devenez</a> membre</a></span></li>
      </ul><br /><h3>Les nouveaux jeux PC ajoutés cette semaine : </h3>
      
      
      <!-- a supprimer -->
      			
      			<?php  //  erreur : if (have_posts()) : while (have_posts()) : the_post(); ?>
      			
      <!-- a supprimer -->
      			
      		
      		<div class="articlehome">
      			<?php if(function_exists('wp_gdsr_render_article')){ wp_gdsr_render_article(); } ?>
      <?php query_posts('cat=5&showposts=5'); while (have_posts()) : the_post(); // boucle 01 ?>
      
      <?php the_excerpt(); ?>
      
      <?php endwhile; // fermeture de la // boucle 01  ?> 
      <?php  wp_reset_query(); // reset?>
              </div>
              
              <div class="articlehome">
      <?php query_posts('cat=9&showposts=5'); while (have_posts()) : the_post(); // boucle 02 ?>
      
      <?php the_excerpt(); ?>
      
      <?php endwhile; // fermeture de la boucle 02 ?> 
      <?php  wp_reset_query(); ?>
              </div>
              
              <div class="articlehome">
      <?php query_posts('cat=739&showposts=5'); while (have_posts()) : the_post(); // boucle 03 ?>
      
      <?php the_excerpt(); ?>
      
      <?php endwhile; // fermeture de la boucle 03 ?> 
      <?php  wp_reset_query(); // reset)?>
      			
         		</div>
                  
                  
      <!-- a supprimer -->			
      			<?php // erreur endwhile; else: ?>
      			
      			<p><?php // erreur _e('Sorry, no posts matched your criteria.'); ?></p><?php // erreur endif; ?>
      
      <!-- a supprimer -->
      		
      		</div>
      				
      	</div>
      	
      
      		
      </div>
      	
      <div id="contentrighthome">
      
      <script type="text/javascript"><!--
      google_ad_client = "ca-pub-8971473270297083";
      /* 300x250, date de création 04/06/10 */
      google_ad_slot = "6161001445";
      google_ad_width = 300;
      google_ad_height = 250;
      //-->
      </script>
      <script type="text/javascript"
      src="<a href="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt" rel="nofollow">http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt</a>;
      </script>
      </div>
      <!-- The main column ends  -->
      
      <?php get_footer(); ?>
      
  14. Gwen dit :

    Super!!Merci!! Il faut que je bidouille encore un peu mais tu m’as vraiment beaucoup aidé..c’est très sympa de ta part^^ un grand merci^^ une très bonne continuation et longue vie à ton blog 😉

  15. alban dit :

    Bonjour,

    J’aimerai réaliser une query_posts afin de pouvoir implanter dans ma sidebar right les derniers articles de mes auteurs, accompagné de leur nom, prénom et donc du dernier article.

    Quelle manip dois-je réaliser car j’ai lu votre article mais je ne comprends pas tout.

    Par quoi dois-je commencer ? Inclure ceci dans function.php ? :
    1
    // début de la boucle avec la fonction query_post
    2
    3
    4
    5// affiche du contenu de votre article
    6
    7 // fermeture de la boucle

    Ensuite, comment appeler cette fonction dans ma sidebar droite ?

  16. alban dit :

    Mon but étant de réaliser la même sidebar que celle nommée « Les invités du Point » sur lepoint.fr

    • Fred dit :

      Bonjour Alban,
      Pour ajouter une nouvelle sidebar vous devez dans un premier temps la déclarer dans le fichier function.php du Thème WordPress exemple :

      register_sidebar(array(
      
          'name' => __( 'Sidebar invite'),
      
          'before_widget' => '<div id="%1$s" class="%2$s widget">',
      
          'after_widget' => '</div>',
      
          'before_title' => '<h3 class="widget-title">',
      
          'after_title' => '</h3>', ));
      
      

      Ensuite, créer un fichier sidebar-invite.php dans le dossier du thème (un copier-coller du fichier sidebar.php) ajouté le code suivant :

      <?php
      
      /**
      
       * Sidebar Invité.
      
       */
      
      ?>
      
      <div id="sidebar">
      
      <ul>
      
      <?php if ( ! dynamic_sidebar( 'Sidebar invite' ) ) : ?>
      
      <?php endif;?>
      
      </ul>
      
      </div>
      

      Ensuite, éditer le fichier template « Les invités du Point » puis placer le code suivant dans le template pour appeler la sidebar :

      <?php get_sidebar('invite'); ?>
      

      Important ne pas mettre les accents dans le code, puis modifier le code HTML en fonction de votre thème et le css aussi pour aligner la sidebar à droite.

  17. Anaon dit :

    Bonjour!

    Tout d’abord, merci pour l’article mais j’ai encore quelques questions qui dont les réponses peuvent paraitrs évidentes pour les utilisateurs expérimentés de WP mais pas encore de mon coté!

    Je voulais savoir où exactement je pouvais mettre ma requête pour l’afficher?

    Je tente de faire une page « blog » n’affichant qu’une liste des titres des posts avec une date et un lien mais je n’arrive même pas à afficher la liste complète.

    Voici un screenshot de l’endroit où j’ai inséré ma requête : http://puu.sh/5m73C.png

    et le code :

    <?php query_posts('cat=2&showposts=5'); while (have_posts()) : the_post();  ?>
    
    <?php the_content(); ?>
    
    <?php endwhile; ?>

    Est-ce le bon endroit?

    Merci d’avance pour la réponse!

    • Fred dit :

      Bonjour Anaon,
      Déjà de base dans wordpress vous ne pouvez pas insérer de code PHP dans l’éditeur de texte que de code HTML,javascript et les shortcodes.
      Pour ajouter une page blog vous devez créer une page template à partir du modèle de base exemple :
      Copier-coller le fichier page.php de votre thème puis renommer le en page-blog.php par exemple puis éditer le fichier et change l’entête par :

      <?php
      /**
       * 
       * Template Name: Blog
       */
      get_header();
      ?> 
      
      

      Puis supprimer la boucle gardée que le code html ensuite ajouter le code que vous voulez insérer pour afficher votre blog.
      Ensuite, créer une nouvelle page, sélectionner le modèle Blog, publié.
      Voila vous aurez votre page index pour votre blog.

      • Anaon dit :

        Merci pour la réponse, entre-temps, vu que le site sera limité à ce qu’il fait actuellement, j’ai directement modifié le template Blog pour en faire ce que je voulais!

        Voila le résultat :

        <?php 
        /* 	Template Name: Blog
        	Small Business Theme's Blog Posts Showung Template
        	Copyright: 2012-2013, D5 Creation, www.d5creation.com
        	Based on the Simplest D5 Framework for WordPress
        	Since Small Business 1.0
        */
        
        get_header(); ?>
        <div id="content">
        
        <?php
        $args = array( 'post_type'=> 'post', 'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ) );
        query_posts( $args ); 
        
        if (have_posts()) : while (have_posts()) : the_post();?>
        <div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
         <h2 class="post-title"><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h2>
         <div class="content-ver-sep"> </div>
         <div class="entrytext"><?php
         $contenu = substr(get_the_content(), 0, 200).'<a href="'.get_permalink().'">...</a>';
        	echo $contenu ; 
         ?>
         <div class="clear"> </div>
         <div class="up-bottom-border">
         <p class="postmetadata">Rédigé par <span style="color:red;"><?php the_author() ?></span>, Le <?php the_time('d.m.Y'); ?></p>
         </div>
         </div></div>
         
         <?php endwhile; ?>
        
        <div id="page-nav">
        <div class="alignleft"><?php previous_posts_link('&laquo; Previous Entries') ?></div>
        <div class="alignright"><?php next_posts_link('Next Entries &raquo;','') ?></div>
        </div>
          
         
         <?php  else:  ?>
         
         <h1 class="arc-post-title">Sorry, we couldn't find anything that matched your search.</h1>
        		
        		<h3 class="arc-src"><span>You Can Try Another Search...</span></h3>
        		<?php get_search_form(); ?>
        		<p><a href="<?php echo home_url(); ?>" title="Browse the Home Page">&laquo; Or Return to the Home Page</a></p><br />
        		<h2 class="post-title-color">You can also Visit the Following. These are the Featured Contents</h2>
        		<div class="content-ver-sep"></div><br />
        		<?php get_template_part( 'featured-box' ); ?> 
         
        <?php endif; wp_reset_query(); ?>
         
        
        </div>
        
        <?php get_sidebar(); ?>
        <?php get_footer(); ?>

        Merci quand même pour la réponse!

        Post très utile =)

  18. Philippe dit :

    Bonjour,
    merci pour l’article qui est très intéressant.
    Vous allez peut être pouvoir m’aider, sur un problème que je n’arrive pas à résoudre.
    Je souhaite afficher dans les catégorie, 10 articles, mais avec une séparation après le 5e articles.
    Pour simplifier, voici mon fichier category.php épuré

    <?php if ( have_posts() ) : ?> <?php query_posts('showposts=5'); while (have_posts()) : the_post(); ?>
    <?php the_excerpt(); ?>
    <?php endwhile;endif; ?>
    

    Puis je rentre ma séparation.
    Puis de nouveau les 5 articles suivants

    <?php if(have_posts()) : ?><?php query_posts('showposts=5&offset=5'); while (have_posts()) : the_post(); ?>
    <?php the_excerpt(); ?>
    <?php endwhile;endif; ?>
    

    Jusque là c’est bon, mais s’il y a 15 articles, cela ne fonctionne plus, car quand je clique sur le lien suivant, il m’affiche de nouveau les mêmes articles.
    Aurez-tu une idée pour gérer ce genre d’affichage, si c’est possible.
    Cordialement.
    Philippe

    • Fred dit :

      Bonsoir Philippe,
      Pour résoudre votre problème on va créer une boucle qui va compter les articles et afficher une balise de séparation tous les 5 articles, en ajoutant la fonction $count.

      <?php $count = 0; // ici ont indique la valeur 0 pour commencer a compter des le premier article
       query_posts('cat=0&showpost=15');
       while(have_posts()) : the_post(); $count++; global $post; // ici ont commence a compter les articles ?>
      <!--boucle-->
      <a href="<?php the_permalink(); ? rel="nofollow">"><?php the_title(); ?></a>
      <!--boucle-->
      <?php if ($count % 5 == 0) { echo '<div style="clear:both; width: 100%;">séparation</div>'; } // et ici au bout de 5 article j'affiche ma balise de séparation ?> 
      <?php endwhile; ?>
      

      Il suffit de modifier l’ID de la catégorie et le nombre d’articles et de modifier la balise de séparation :

      <div style="clear:both; width: 100%;">séparation</div>

  19. Marion dit :

    Bonjour,

    Pour ma part j’ai une petite question, je souhaiterais exclure de la boucle de la homepage, les 3 derniers articles avec la taxonomy « video » car ils apparaissent déjà dans le slider au-dessus.

    Voilà comment la taxonomy est appelée

    $postType = get_post_meta ( $post->ID, THEME_NAME."_post_type", true );

    Mais avec Query posts j’ai l’impression que l’on peut appeler un nombre de posts spécifique ou en exclure mais pas exclure 3 posts spécifiques d’une taxonomie et afficher tout le reste.

    <?php 
    	if ( is_front_page()) {
    		$args = array(
    		'post_type'=> 'video',
    		'offset'=> 1,
    		);
    		query_posts( $args );
    	}
    	if (have_posts()) : while (have_posts()) : the_post(); ?>
    

    Merci en tout cas pour votre article

    • Fred dit :

      Bonsoir Marion,
      Dans votre cas il faudrait utiliser la fonction WP_query exemple :

      <?php 
      if ( is_front_page()) {
      $args= array(
      			'post_type' => 'video',
      			'post__not_in'  => array( '595', '33', '44' ) // indiquez les identifiants des articles a exclure
      			
      			);
      }			
      $the_query = new WP_Query($args);
      while ($the_query->have_posts()) : $the_query->the_post();
        	   // Votre boucle 
      
      endwhile;
      ?>
      

      Vous pouvez télécharger le tableau que j’ai fait vous avez tous les arguments ICI

      • Marion dit :

        Merci de votre réponse !
        Cependant je cherche une méthode automatique. Le slider va s’actualiser toutes les semaines, je ne me vois pas changer les ID des articles à exclure chaque semaine…

        • Fred dit :

          Essayer avec la fonction do_not_duplicate ça devrait fonctionner.

          <?php
          	if ( is_front_page()) {
          		$do_not_duplicate = array();
          		$args = array(
          		'post_type'=> 'video'
          		);
          		query_posts( $args );
          	}
          	if (have_posts()) : while (have_posts()) : the_post();
          	$do_not_duplicate[] = $post->ID; 
          	?>
          
          • Marion dit :

            J’étais tombée sur ce bout de code mais impossible de le faire marcher. Sachant que la boucle du slider arrive avant la boucle générale. J’ai essayé de mettre ce code dans la boucle générale

            function homepage_news_block_5($blockType, $blockId,$blockInputType) {
            		global $blogStyle;
            		$cat = get_option(THEME_NAME."_".$blockType."_cat_".$blockId);
            		$count = get_option(THEME_NAME."_".$blockType."_count_".$blockId);
            		$pagination = get_option(THEME_NAME."_".$blockType."_pagination_".$blockId);
            		$blogStyle = get_option(THEME_NAME."_".$blockType."_blog_style_".$blockId);
            		$paged = get_query_string_paged();
            		$args = array(
            			'post_type' => "post",
            			'offset' => 1,
            			'cat' => $cat,
            			'paged'=>$paged,
            			'posts_per_page' => $count,
            			
            		);
            
            		
            		$my_query = new WP_Query($args);
            		$counter = 1;
            
            
            ?>
            	<div class="clear"></div>
            	<?php if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); ?>
            

            Mais rien n’y fait…

            • Fred dit :

              Bonjour Marion,

              Le code ci-dessus est une fonction pour l’interpréter il faut l’appeler par son nom :

              <?php homepage_news_block_5();?>
              

              et elle n’ai pas complete

  20. gwenael dit :

    Bonjour 🙂
    Super post merci beaucoup, je viens tout de même demander un peu d’aide…je pensais avoir tout bien compris mais ce que je veux faire ne marche pas!!je m’explique je voudrai le dernier article de chaque catégorie sur ma page d’accueil (donc 1 seul article/catégorie)
    j’ai donc mis ce code dans le fichier index.php de mon thème

    <?php query_posts('cat=11&showposts=1');
    while(have_posts()):the_posts();?>
    <?php the_content();?>
    <?php endwhile;?>
    <?php wp_reset_query();?>
    
    <?php query_posts('cat=places-a-gagner&showposts=1');
    while(have_posts()):the_posts();?>
    <?php the_content();?>
    <?php endwhile;?>
    <?php wp_reset_query();?>
    
    <?php query_posts('cat=musique&showposts=1');
    while(have_posts()):the_posts();?>
    <?php the_content();?>
    <?php endwhile;?>
    <?php wp_reset_query();?>
    
    <?php query_posts('cat=culture&showposts=1');
    while(have_posts()):the_posts();?>
    <?php the_content();?>
    <?php endwhile;?>
    <?php wp_reset_query();?>
    

    malheureusement je ne suis pas trés forte en php et je ne trouve pas pourquoi rien ne change sur ma page d’accueil 🙁

    merci d’avance pour le coup de main 😉

    • Fred dit :

      Bonsoir Gwenael,
      C’était presque ca 🙂 , il y avait quelques petite erreurs la première boucle est correct cat=11 mais les autres cat=places-a-gagner sa peu pas fonctionner cat reprend seulement l’identifiant numérique de la catégorie et nom l’identifiant name, pour interprété celui-ci il faut l’écrire comme ca : category_name=places-a-gagner et puis il manquait un espace avant the_posts qui générait une erreur. J’ai tous corriger et ca devrais fonctionner, mais vérifier si vous n’avez pas un fichier home.php dans votre thème car celui-ci remplace index.php pour la page d’accueil.

      <?php query_posts('cat=11&showposts=1');
      while (have_posts()) : the_post();?>
      <h2><?php the_title();?></h2>
      <?php the_content();?>
      <?php endwhile;?>
      <?php wp_reset_query();?>
      
      <?php query_posts('category_name=places-a-gagner&showposts=1');
      while (have_posts()) : the_post();?>
      <h2><?php the_title();?></h2>
      <?php the_content();?>
      <?php endwhile;?>
      <?php wp_reset_query();?>
      
      <?php query_posts('category_name=musique&showposts=1');
      while (have_posts()) : the_post();?>
      <h2><?php the_title();?></h2>
      <?php the_content();?>
      <?php endwhile;?>
      <?php wp_reset_query();?>
      
      <?php query_posts('category_name=culture&showposts=1');
      while (have_posts()) : the_post();?>
      <h2><?php the_title();?></h2>
      <?php the_content();?>
      <?php endwhile;?>
      <?php wp_reset_query();?>
      
  21. gwenael dit :

    Bonjour,
    MERCI BEAUCOUP d’avoir pris le temps de regarder malheureusement ça ne marche pas…deja je n’aie pas de fichier home.php, ensuite lorsque que j’ajoute ce code dans index.php de mon thème cela m’affiche seulement 3 articles des categories désirée mais avec une mise en page toute cassée et à la suite les autres articles que je ne voulais pas avec la bonne mise en page.
    voici le code de mon index

    <?php
    /**
     * The template for displaying the home/index page.
     * This template will also be called in any case where the WordPress engine 
     * doesn't know which template to use (e.g. 404 error)
     */
    
    $layout = of_get_option('side_bar');
    $layout = (empty($layout)) ? 'right_side' : $layout;
    $ad_posts_mode = of_get_option('ad_posts_mode', 'none');
    $ad_posts_frequency = of_get_option('ad_posts_frequency', 'none');
    $ad_posts_box = of_get_option('ad_posts_box', true);
    
    get_header(); ?>
       
    
    
    
    
    
    <?php
    	// Advert above content
    	$ad_content_placement 	= of_get_option('ad_content_placement', array('home' => true,'pages' => true,'posts' => true));
    	$ad_content_mode 		= of_get_option('ad_content_mode', 'none');
    	$ad_content_box 		= of_get_option('ad_content_box', true);
    	$ad_content_padding 		= of_get_option('ad_content_padding', true);
    
    	if($ad_content_mode != 'none' and $ad_content_placement['home'] == true and is_home()){
    		echo '<div class="above_content'.(($ad_content_box) ? ' box' : '').(($ad_content_padding) ? ' pad15' : '').'">';
    			if($ad_content_mode == 'image'){
    				echo '<a href="'.of_get_option('ad_content_image_link').'" target="_blank"><img src="'.of_get_option('ad_content_image').'"></a>';
    			}elseif($ad_content_mode == 'html'){
    				echo apply_filters('shortcode_filter',do_shortcode(of_get_option('ad_content_code')));
    			}
    		echo '</div>';
    	}
    ?>
    	<div id="primary" class="row layout_<?php echo $layout ?>">
    		
    		<div id="content" class="<?php echo ($layout == 'single') ? 'span10 offset1' : 'span9'; ?>" role="main">
            
    
           
    		<?php 
    
    			if( have_posts() ){ 
    
    				$i = 1;
    				while ( have_posts() ){
    
    					the_post(); 
    					get_template_part( 'inc/post-format/content', get_post_format() );
    
    					// advertising between posts
    					if($ad_posts_mode != 'none'){
    
    						// take into account ad frequency
    						if (($i % $ad_posts_frequency) == 0){
    
    							switch ($ad_posts_mode) {
    								case 'image':
    									echo '<div class="'.(($ad_posts_box) ? 'box' : '').' between_posts"><a target="_blank" href="'.of_get_option('ad_posts_image_link').'"><img src="'.of_get_option('ad_posts_image').'"></a></div>';
    								break;
    								case 'html':
    									echo '<div class="'.(($ad_posts_box) ? 'box' : '').' between_posts">'.apply_filters('shortcode_filter',do_shortcode(of_get_option('ad_posts_code'))).'</div>';
    								break;
    							}
    						}
    					}
    					$i++;
    				}
    
    			}else{ ?>
    			<article class="type-page box">
    				<h1 class="title"><?php _e('Post not found', 'bluth'); ?></h1>
    				<p class="lead"><?php _e('We could not find that post you were looking for.', 'bluth'); ?></p>
    				<br>
    				<h3><?php _e('Try searching', 'bluth') ?></h3>
    				<?php echo get_search_form(); ?>
    				<?php get_template_part( 'inc/recent-posts' ); ?>				
    			</article>
    			<?php } 
    
    			kriesi_pagination(); 
    
    			?> 
    		</div><!-- #content -->
    		<?php if($layout == 'right_side' or $layout == 'left_side'){ ?>
    		<aside id="side-bar" class="span3">
    				<?php get_sidebar(); ?>
    		</aside>
    		<?php } ?>				
    	</div><!-- #primary -->
    <?php get_footer(); ?>
    

    j’ai enlevé le bout de code de la fonction query_posts car je pense que je l’aie mal placée.

    Voila si vous avez encore quelques minutes à m’accorder je vous remercie encore.
    gwenael

    • Fred dit :

      J’ai modifier votre template le mieux se serais de créer un ficher home.php(faite un copier coller de index.php et renomer le) et d’ajouter le nouveau code comme ca le fichier sera uniquement pour la page d’accueil.

      <?php
      /**
       * The template for displaying the home/index page.
       * This template will also be called in any case where the WordPress engine 
       * doesn't know which template to use (e.g. 404 error)
       */
      
      $layout = of_get_option('side_bar');
      $layout = (empty($layout)) ? 'right_side' : $layout;
      $ad_posts_mode = of_get_option('ad_posts_mode', 'none');
      $ad_posts_frequency = of_get_option('ad_posts_frequency', 'none');
      $ad_posts_box = of_get_option('ad_posts_box', true);
      
      get_header(); ?>
         
      
      
      
      
      
      <?php
      	// Advert above content
      	$ad_content_placement 	= of_get_option('ad_content_placement', array('home' => true,'pages' => true,'posts' => true));
      	$ad_content_mode 		= of_get_option('ad_content_mode', 'none');
      	$ad_content_box 		= of_get_option('ad_content_box', true);
      	$ad_content_padding 		= of_get_option('ad_content_padding', true);
      
      	if($ad_content_mode != 'none' and $ad_content_placement['home'] == true and is_home()){
      		echo '<div class="above_content'.(($ad_content_box) ? ' box' : '').(($ad_content_padding) ? ' pad15' : '').'">';
      			if($ad_content_mode == 'image'){
      				echo '<a href="'.of_get_option('ad_content_image_link').'" target="_blank"><img src="'.of_get_option('ad_content_image').'"></a>';
      			}elseif($ad_content_mode == 'html'){
      				echo apply_filters('shortcode_filter',do_shortcode(of_get_option('ad_content_code')));
      			}
      		echo '</div>';
      	}
      ?>
      	<div id="primary" class="row layout_<?php echo $layout ?>">
      		
      		<div id="content" class="<?php echo ($layout == 'single') ? 'span10 offset1' : 'span9'; ?>" role="main">
              
      <!-- Boucles --->
      			<?php query_posts('cat=11&showposts=1');
                  while (have_posts()) : the_post();?>
                  <h2><?php the_title();?></h2>
                  <?php the_content();?>
                  <?php endwhile;?>
                  <?php wp_reset_query();?>
                  
                  <?php query_posts('category_name=places-a-gagner&showposts=1');
                  while (have_posts()) : the_post();?>
                  <h2><?php the_title();?></h2>
                  <?php the_content();?>
                  <?php endwhile;?>
                  <?php wp_reset_query();?>
                  
                  <?php query_posts('category_name=musique&showposts=1');
                  while (have_posts()) : the_post();?>
                  <h2><?php the_title();?></h2>
                  <?php the_content();?>
                  <?php endwhile;?>
                  <?php wp_reset_query();?>
                  
                  <?php query_posts('category_name=culture&showposts=1');
                  while (have_posts()) : the_post();?>
                  <h2><?php the_title();?></h2>
                  <?php the_content();?>
                  <?php endwhile;?>
                  <?php wp_reset_query();?>
      <!-- Boucles fin --->
      
      
      		</div><!-- #content -->
      		<?php if($layout == 'right_side' or $layout == 'left_side'){ ?>
      		<aside id="side-bar" class="span3">
      				<?php get_sidebar(); ?>
      		</aside>
      		<?php } ?>				
      	</div><!-- #primary -->
      <?php get_footer(); ?>
      
      
  22. gwenael dit :

    Merci beaucoup je vais essayer je vous tiens au courant 😉

  23. gwenael dit :

    Bonjour, j’ai essayer ce code mais a priori le while serait faux j’ai ce message:
    Parse error: syntax error, unexpected ‘while’ (T_WHILE) in /homepages/3/d464879447/htdocs/place/wp-content/themes/keilir/front-page.php on line 53.

    j’avoue avoir demandé de l’aide sur plusieurs forum mais rien ne fonctionne je désespère un peu la…

  24. ideographe dit :

    Salut,
    Super tuto très utile, Merci !

    J’aurais toutefois une question :

    J’ai utilisé les query_post pour faire une page d’accueil du’un site ou l’on retrouve le dernier article publié X 4 Catégories
    du coup, j’ai remplacé le code initial de page.php par ;

    <?php query_posts('category_name=chronique&showposts=1'); while (have_posts()) : the_post(); ?> 
       <?php the_post_thumbnail(); ?>
    <?php the_title(); ?> 
    <?php the_content(); ?> 
    <?php endwhile; ?> 
    

    Mon probleme est que j’aurais voulu avoir la possibilité de créer un « lire la suite » pour ne pas afficher tout mon article dans cette page , mais seulement un extrait.

    Et ca ne marche pas…

    Aurais tu un conseil la dessus?

    Merci d’avance !
    Marc

    • Fred dit :

      Salut Idéo,
      Essaye cette boucle et ce devrais fonctionner 😉
      Il faut utiliser the_excerpt pour les extraits et the_pemalink qui va récupérer le lien de l’article

      <?php query_posts('category_name=chronique&showposts=1'); while (have_posts()) : the_post();  
      the_post_thumbnail();
      the_title(); 
      the_excerpt(); ?>
      <a href="<?php the_permalink(); ?>">Lire la suite...</a>
      <?php endwhile; ?>
      <?php wp_reset_query(); ?>
      
  25. ideographe dit :

    Merci a toi!
    Je vais essayer ca

  26. Jeff dit :

    Bonjour,

    Je cherche une solution pour afficher la catégorie et sous catégorie d’une page pour laquelle j’ai créé des catégories et sous catégories. J’utilise le code suivant mais tout est au même niveau.
    Merci de votre réponse.

                       	
                        	
                        		<a href="" rel="nofollow">name; ?&gt;</a>
                        		
                        	
    
    • Fred dit :

      Bonjour Jeff,

      Essayez ce code a l’extérieur de la boucle

      <?php
          $cat=3; // ID de la catégorie parent
          $category_id = get_cat_ID($cat);
      	$cat_name = get_category($cat);
          // Url de la catégorie parent
          $category_link = get_category_link( $category_id );
      ?>
      <!-- Affiche la catégorie parent -->
      <p> Catégorie : <a href="<?php echo esc_url( $category_link ); ?>" title="Category Name"><?php echo $cat_name->name;?></a></p>
      <!-- Affiche les souc-catégorie de la catégorie parent -->
      <?php 
      $args = array('parent' => $cat);
      $categories = get_categories( $args );
      foreach($categories as $category) { 
          echo '<p>Sous catégorie: <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> </p> ';
          echo '<p> Description:'. $category->description . '</p>';
          echo "<p> Nombre d'article: ". $category->count . '</p>';  
      }?>
      
      • Jef dit :

        Bonjour Fred,
        Merci de ta réponse très rapide. En fait ma page comprend 2 catégories qui comprennent des sous-catégories qui comprennent des sous-sous-catégories. En fait je dois avouer que je suis un peu largé sur comment gérer toutes ses sous-catégorie. Peut être le mieux et de se contacter afin d’être plus claire et ne pas polluer cet article.
        Merci à toi.

  27. Gwenaelle dit :

    Bonjour, merci pour tous ces script qui sont ont ne plus claire. Personnellement, je recherche à ne pas afficher certain mots clés, que ce soit dans le widget mot clé ou dans les postes.. Est ce que c’est possible ? Merci encore 😉

  28. Gwenaelle dit :

    Merci 🙂

  29. Amélie dit :

    Bonjour Fred j’espère que tu es encore connecté sur ton site ! 🙂 voilà j’ai lu un peu tes commentaires (tout est bien expliqué même pour moi qui suis pas au top en php ^^) et j’ai essayé ta méthode http://www.naxialis.com/utiliser-la-fonction-query_posts/#comment-813 .

    Ma catégorie est nommée « Actualités ».
    Mon fichier lui est nommé page-actualites.php, et j’ai mis ce code:

    <?php
    2	/**
    3	 * Template Name: Actualités
    4	 *
    5	 *
    6	 */
    7	 
    8	get_header(); ?>
    9	 
    10	<div id="container">
    11	<div id="content" role="main">
    12	<!-- début de la boucle avec la fonction query_post -->
    13	 
    14	<?php query_posts('cat=actualites&showposts=10'); while (have_posts()) : the_post(); ?>
    15	<?php the_title();?> <!-- titre de l'article -->
    16	<?php the_excerpt(); ?> <!-- affiche du contenu de votre article -->
    17	 
    18	<?php endwhile; ?> <!-- fermeture de la boucle -->
    19	             
    20	</div><!-- #content -->
    21	</div><!-- #container -->
    22	 
    23	<?php get_sidebar(); ?>
    24	<?php get_footer(); ?>

    J’ai bien créé ma catégorie « Actualités » et mis des articles dedans, pourtant quand je veux créer une page il n’y pas de Template nommé « Actualités » ou « actualites ». Où est l’erreur ? ^^ » merci beaucoup !

    • Fred dit :

      Bonsoir Amélie,
      J’ai testé ton code dans un template et il fonctionne bien j’ai la page template Actualité, donc l’erreur doit provenir de l’encodage de ton fichier page-actualite.php qui doit être en utf-8, pour savoir si c’est bien ça met le nom de ta page template Actualite sans accent. Sinon fait un copier-coller d’un fichier php de ton thème renomme le page-actualite.php et ajoute le code de ta page avec accent ça devrait fonctionner 😉

  30. Bonjour Fred,

    Vive internet et Google, on était à la recherche de la commande (que nous ne connaissions pas) Offset pour définir notre liste d’article et en exclure le dernier pour notre nouveau layout.

    Avec ta page c’est désormais entré dans notre futur code ! Un grand merci !!! Je mets un bout de code de notre rubrique Tests en bref qui est pour le moment sur la droite de notre home page si ça peut aider kkun.

    » <a href=" » rel= »bookmark » title= »Lien permanent « >

    PS : Si tu t’ennuies et veut tester du matériel sans fil reprend contact avec moi 🙂

  31. dixie dit :

    besoin d’aide

    js creer un tableau pour recuperer les 4 derniers articles de la categorie affiche sur ma page home.php

    $catposts = get_posts('category_name=affiche&showposts=4&order=ASC');
    
    			foreach($catposts as $post) : 
    			
    					$tab[]= get_the_ID();
    				
    				//$i=$i+1;
    
    
    			 endforeach; 
    
    

    et j’ai cree un autre tableau pour pouvoir recuperer les trois derniers articles de la categorie prohainement mais le probleme qui se pose le deuxieme tableau ne recupere tous les articles de toutes les categories

    
    $catpostss = get_posts('category_name=prochainement&showposts=3&order=ASC');
    
    			foreach($catpostss as $posts) : 
    			
    					$vab[]= get_the_ID();
    				
    				//$i=$i+1;
    
    
    			 endforeach;
    
    • Fred dit :

      Bonjour Dixie,

      Essayer comme ca, il faut restaurer les variables pour chaque boucle

      <?php
      //Premier tableau
      $catposts = get_posts('category_name=affiche&showposts=4&order=ASC');
      
      			foreach($catposts as $post) : 
      			setup_postdata($post); // Aide à formater les résultats de requête personnalisé 
      					$tab[]= get_the_ID();
      				
      				//$i=$i+1;
      
      
      			 endforeach; 
      			 wp_reset_postdata(); //Utilisez cette fonction pour restaurer la variable globale $
      			 
      //Teuxiéme tableau			 
      $catpostss = get_posts('category_name=prochainement&showposts=3&order=ASC');
      
      			foreach($catpostss as $post) : 
      			setup_postdata($post); // Aide à formater les résultats de requête personnalisé
      					$vab[]= get_the_ID();
      				
      				//$i=$i+1;
      
      
      			 endforeach;
      			  wp_reset_postdata(); //Utilisez cette fonction pour restaurer la variable globale $
      			  
      ?>
      
      • Dixie dit :

        Slt Fred!
        Ca marche a moitié ca n’affiche plus pour les articles du premier tableau mais ca affiche toujours les autres articles des autres categories
        J’ai utilise ce code pour recuperer les articles

  32. dixie dit :

    Bonjour Fred;
    desole je pensais t’avoir envoyer le code

    //pour recuperer mes articles

    <?php echo '’;
    the_post_thumbnail(‘loop-main’);
     »; ?>

    • Fred dit :

      Salut Dixie,

      Essaye avec la requête WP_query :

      <?php //Premier tableau
      
      $args= array(
      			'showposts' => 4,
      			'category_name' => 'affiche',
      			'order'  => 'ASC'
      			);
      			
      $the_query = new WP_Query($args);
      while ($the_query->have_posts()) : $the_query->the_post();
        // contenue de la boucle 
        ?>
        <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
        <p><?php the_excerpt();?></p>
        
      <?php // contenue de la boucle fin
      endwhile;
       wp_reset_postdata();
      ?>
      
      
      <?php //Deuxiéme tableau
      
      $args= array(
      			'showposts' => 3,
      			'category_name' => 'prochainement',
      			'order'  => 'ASC'
      			);
      			
      $the_query = new WP_Query($args);
      while ($the_query->have_posts()) : $the_query->the_post();
        // contenue de la boucle 
        ?>
        <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
        <p><?php the_excerpt();?></p>
        
      <?php // contenue de la boucle fin
      endwhile;
       wp_reset_postdata();
      ?>
      

      the_post_thumbnail(‘loop-main’); ca c’est juste pour récupéré l’image de l’article que tu place a l’intérieur de la boucle.

  33. dixie dit :

    je vous envoi tout mon code
    merci bcp pour votre aide!

    4, // nombre d’article
    ‘category_name’ => ‘affiche’, // nom de la catégorie (identifiant sans accent et majuscule)
    ‘orderby’ => ‘date’, // ordre par date
    ‘order’ => ‘ASC’, // ordre décendant
    );*/

    $catposts = get_posts(‘category_name=affiche&showposts=4&order=ASC’);

    foreach($catposts as $post) : setup_postdata($post);

    $tab[]= get_the_ID();

    //$i=$i+1;

    endforeach;
    wp_reset_postdata();

    $catpostss = get_posts(‘category_name=prochainement&showposts=3&order=ASC’);

    foreach($catpostss as $posts) : setup_postdata($post);

    $vab[]= get_the_ID();

    //$i=$i+1;

    endforeach;
    wp_reset_postdata();

    $catposts = get_posts(‘category_name=actualite&showposts=2′);//&order=ASC’);

    foreach($catposts as $posts) :

    $con[]= get_the_ID();

    //$i=$i+1;

    endforeach;
    ?>

    <a href=" »>

    <a href=" »>

    <a href=" »>

    <a href=" »>

    <a href=" »>

    <a href=" »>

    <a href=" » >
    Nous decouvrir

    rvr

    PROCHAINEMENT

    <a href=" »>

    <a href=" »>

    <a href=" »>

    <a href=" »>

    <a href=" »>

    <a href=" »>

    ACTUALITE

    REJOIGEZ NOUS!

    bknknkm
    bjnjknkjn
    vbhjbjk

    <a href=" »>

    <a href=" »>

    <a href=" »>
    Lire la suite

    <a href=" »>

    <a href=" »>

    <a href=" »>
    Lire la suite

    abcdefghijklmnopqrstvwxz

  34. gilleshb dit :

    Bonjour !
    Tout d’abord merci beaucoup pour ces explication sur les WP query ! c’est bien plus clair que ce qu’on voit sur différents tuto !
    Je cherche à afficher les résumés des derniers posts publiés sur mon blog (en blank quand on clic sur l’icone ordi du site web), plutôt que le dernier article publié.

    Cependant, après plusieurs tests de codes modifiés dans ma page index.php ou j’ai :

    <?php get_template_part('templates/page', 'header'); ?>
    
    <?php if (!have_posts()) : ?>
      <div class="alert alert-warning">
        <?php _e('Sorry, no results were found.', 'roots'); ?>
      </div>
      <?php get_search_form(); ?>
    <?php endif; ?>
    
    <?php while (have_posts()) : the_post(); ?>
      <?php get_template_part('templates/content', get_post_format()); ?>
    <?php endwhile; ?>
    
    <?php if ($wp_query->max_num_pages > 1) : ?>
      <nav class="post-nav">
        <ul class="pager">
          <li class="previous"><?php next_posts_link(__('&larr; Older posts', 'roots')); ?></li>
          <li class="next"><?php previous_posts_link(__('Newer posts &rarr;', 'roots')); ?></li>
        </ul>
      </nav>
    <?php endif; ?>
    

    et sur ma page web « base-home.php », le lien vers le template en blank j’ai :

    	<?php /* Gestion blog */?>
    	      	<?php
    				$post_694 = get_post(694); 
    				$title = $post_694->post_title;
    			?>
    			<div class="blogTitle linkT hideDiv">
    				<?php echo $title;?>
    			</div>
    			
    			<?php
    			$args = array( 'posts_per_page' => 1 );
    			
    			$myposts = get_posts( $args );
    			foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
    					<a href="<?php the_permalink(); ?>" target="blank">
    						<?php echo get_the_post_thumbnail($post_694->ID, 'full', array( 'class' => 'blogIMG actionIMG' ));?>
    					</a>
    			<?php endforeach; 
    			wp_reset_postdata();?>
    

    Là je bloque… me manque-t-il une info à modifier ?
    Quelles lignes sont changeables pour atteindre mon objectif ?

    Merci d’avance pour votre réponse !!!
    gilles

    • Fred dit :

      Bonsoir Gilles,
      La ou sa bloque c’est au niveau de la structure, je m’explique dans base-home.php vous faites appel directement a un article avec L’id 694 (ou une page simple) il faudrait faire le lien vers une page template qui contiendrais une boucle pour reprendre les résumés des derniers articles. Une fois votre page template créer changer simple l’id 694 de la ligne 3 get_post(id_de_la_page) ;

      exemple de code pour la page template :

      <!-- début de la boucle avec la fonction query_post -->
      
      <?php query_posts('cat=0&showposts=4'); while (have_posts()) : the_post(); ?>
      <?php the_title();?> <!-- titre de l'article -->
      <?php the_excerpt(); ?> <!-- affiche du contenu de votre article -->
      
      <?php endwhile; ?> <!-- fermeture de la boucle -->
      
      • gilleshb dit :

        Merci Fred pour cette réponse ultra rapide !

        En fait pour préciser, j’ai ma partie site avec un template et j’ai ma partie blog avec un autre template.
        En fait, depuis mon site web, j’ai fait un lien vers mon template blog via l’icone ordinateur : cette icone c’est une image mis en image à la une sur une page vierge (c’est le post 694).
        De là j’arrive sur mon template blog (avec index.php en base de départ, puis les header.php, footer.php, content.php, content-single.php, content-page.php… etc.)

        Donc en fait j’ai bien un template séparé pour le blog. Mais du coup ce n’est pas sur index.php de ce template que je change les codes ?

        • Fred dit :

          Bonsoir Gilles,
          Index.php fonctionne si vous n’avez pas défini de page d’accueil ou de page archives,catégorie…
          Il faut changer le code dans la page template du blog ou faire un copier coller du code de la page index.php dans la page template du blog si vous voulez retrouver la même présentation.
          Votre site et votre blog sont bien sur le même base de donner et pas en sous domaine ?

          • gilleshb dit :

            Merci Fred,

            Effectivement le site et le blog sont sur la même base de données, le blog n’est pas en sous-domaine.
            Je vais voir cette histoire de template blog (car pour moi c’est index.php ce fameux template), et voir les connexions avec les autres fichiers php du dossier blog.

            Merci pour tes lumières !

          • gilleshb dit :

            Bonjour Fred,
            J’ai suivi tes recommandation, et j’ai retrouvé mes petits…

            En entrée de blog j’ai le fichier « single.php » qui me renvoyait d’office sur la page « content.php » qui elle pourtant reprenait le code de bloglisting….

            Maintenant, J’ai un fichier « content-page.php » avec:

            <?php while (have_posts()) : the_post(); ?>
              <?php the_content(); ?>
              <?php wp_link_pages(array('before' => '<nav class="pagination">', 'after' => '</nav>')); ?>
            <?php endwhile; ?></code>
            Un fichier content.php avec : 
            <code>
            <article <?php post_class('blogListing'); ?>>
              	<div class="col-sm-4 thumbContNav">
            	  	<?php if ( has_post_thumbnail()) : ?>
            			<a class="thumbPreview" href="<?php the_permalink() ?>"><?php the_post_thumbnail('medium'); ?></a>
            		<?php endif; ?>
              	</div>
              	<div class="col-sm-8">
            	    <h2 class="entry-title-listing"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            	    <div class="entry-summary">
            		    <?php the_excerpt(); ?>
            		  </div>
                </div>
              
            </article>

            Un fichier « content-single.php » avec :

            <?php while (have_posts()) : the_post(); ?>
              <article <?php post_class(); ?>>
                <header>
                  <h1 class="entry-title"><?php the_title(); ?></h1>
                  <div class="thumbCont"><?php if ( has_post_thumbnail()) : ?>
            			<?php the_post_thumbnail('full'); ?>
            		<?php endif; ?>
            	  </div>
                </header>
                <div class="entry-content">
                  <?php the_content(); ?>
                </div>
                <footer>
                  <?php wp_link_pages(array('before' => '<nav class="page-nav"><p>' . __('Pages:', 'roots'), 'after' => '</p></nav>')); ?>
                </footer>
                <?php comments_template('/templates/comments.php'); ?>
              </article>
            <?php endwhile; ?>
            

            Et J’ai du coup modifié l’appel d’entrée (dans « single.php ») avec le code suivant :

            <h1>Les derniers articles </h1>
            
            <?php query_posts('cat=0&showposts=4'); while (have_posts()) : the_post(); ?>
            <article <?php post_class('blogListing'); ?>>
              	<div class="col-sm-4 thumbContNav">
            	  	<?php if ( has_post_thumbnail()) : ?>
            			<a class="thumbPreview" href="<?php the_permalink() ?>"><?php the_post_thumbnail('medium'); ?></a>
            		<?php endif; ?>
              	</div>
              	<div class="col-sm-8">
            	    <h2 class="entry-title-listing"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            	    <div class="entry-summary">
            		    <?php the_excerpt(); ?> 
            		  </div>
                </div>
              
            </article>
            <?php endwhile; wp_reset_postdata();?> <!-- fermeture de la boucle -->
            
            <!--ce qu'il y avait auparavant sur ce fichier : <?php get_template_part('templates/content', 'single'); ?> -->
            

            Problème : de là je n’arrive plus à atteindre mes articles via les liens (en titre et avec le « suite » de excerpt) et les ouvrir en page normale avec le contenu complet…

            Peux-tu m’aider de tes lumières ?
            Merci d’avance !!

  35. Koma dit :

    Bonjour,

    Tout d’abord, merci pour votre article!
    J’ai cependant un petit souci au niveau de mon index.php/home.php. En effet, soit, les pages 2/3 […] me renvoient vers la page 404.php de mon template, soit elles m’affichent exactement le même contenu que la première page…

    (J’ai repris votre exemple du premier article qui possède lui seul une image pour le mettre en avant, mais en enlevant le filtre des catégories.)

    Je ne sais pas si cela vient du code, ou si j’ai oublié une étape:

    Introuvable
    Aucun résultat.

    J’ai fait quelques autres tentatives, et effectivement, le mieux que je puisse avoir, c’est le même contenu que la page 1 sur l’ensemble de mes autres pages index.php/home.php…

    Merci d’avance pour votre réponse!
    Koma

  36. Koma dit :

    Bonjour,

    Tout d’abord, merci pour votre article!
    J’ai cependant un petit souci au niveau de mon index.php/home.php. En effet, soit, les pages 2/3 […] me renvoient vers la page 404.php de mon template, soit elles m’affichent exactement le même contenu que la première page…

    (J’ai repris votre exemple du premier article qui possède lui seul une image pour le mettre en avant, mais en enlevant le filtre des catégories.)

    Je ne sais pas si cela vient du code, ou si j’ai oublié une étape:

    <?php get_header(); ?>
    
    <?php query_posts('showposts=1'); while (have_posts()) : the_post(); ?>
    <?php the_title(); ?>
    <?php the_post_thumbnail('large'); ?>
    <?php the_content('Lire la suite...'); ?>
    
    <?php endwhile; ?>
    
    <?php if (have_posts()) : ?>
    <?php query_posts('offset=1'); while (have_posts()) : the_post(); ?>
    <?php the_title(); ?>
    <?php the_content('Lire la suite...'); ?>
    
    <?php endwhile; ?>
                            
                          <center><?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?></center>
    
    <?php else : ?>
    
    		  <h2>Introuvable</h2></div>
    		<div class="post-content"><p>Aucun résultat.</p>
    		<?php get_search_form(); ?></div>
    		<?php endif; ?>	
    			
    <?php get_footer(); ?>
    

    J’ai fait quelques autres tentatives, et effectivement, le mieux que je puisse avoir, c’est le même contenu que la page 1 sur l’ensemble de mes autres pages index.php/home.php…

    Merci d’avance pour votre réponse!
    PS: Excusez-moi pour le doublon, mon premier code ne s’était pas affiché.

    Koma

  37. seb dit :

    Bonjour,

    votre tuto est trés bien fait.
    Mais je recherche la fonction pour afficher le dernier article de sa catégorie en avant premiére dans sur sa page catégorie.

    merci pour votre aide

    • Fred dit :

      Bonsoir Seb,
      Pour afficher le dernier article de sa catégorie sur sa page catégorie ajouter le code suivant dans le fichier archive.php ou category.php selon le thème que vous utilisez :

      <?php while(have_posts()) : the_post(); ?>
      
      <?php foreach((get_the_category()) as $category)
      { $my_query = new WP_Query('category_name=' . $category->category_nicename . '&showposts=1');} ?> 
      
      <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
      
      <h3><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
      <p><?php the_excerpt();?></p>
      
      <?php endwhile; ?>
      
      <?php break; endwhile; ?>
      
      • seb dit :

        Bonjour Fred et un grand merci,

        c’est exactement ce que je recherché.
        Maintenant si je veux donner un style different de chaque page catégorie. je doit créer pour chaque page un fichier « category-id de ma categorie.php ?
        C’est bien ça ?

        Merci encore pour m’avoir aidé !

  38. seb dit :

    Bonjour Fred,

    je recherche le moyen de reoganiser mes archives mais mais je suis en surchauffe .
    Pour le moment les archives ce liste les une au dessus des autre.

    Ce que je voudrais de lister comme suivant :

    Le dernier article en avant premiére ( cela est fait )
    puis desous
    – les 2 avant dernier cote a cote
    Dessous
    – les 4 prochains cote a cote
    Dessous
    – les suivants par default.

    Je sais pas exactement quel fichier modifier.

    content.php dont voici le code ? Merci pour ton aide.

    <article >

    <a href=" » title= » »>
    <?php if (has_post_thumbnail()) { the_post_thumbnail('content-list'); } else {
    echo '’; } ?>

    <a href=" » title= » » rel= »bookmark »>

  39. seb dit :

    Bonjour Fred

    En bas de chaque articles je voudrais proposez aux internautes d’autres article de la méme catégorie.

    Aprés avoir cherché des jours entiers le code idélal et grand succès, je me tourne vers toi pour me venir en aide.

    Merci

    • Fred dit :

      Bonjour Seb,
      voici le code de base a ajouté dans le fichier template (single.php ou content.php) après la boucle :

      <?php // Code a insérer après la boucle principal de l'article  
      $categories = get_the_category($post->ID);
      if ($categories) {
      	$category_ids = array();
      	foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
      
      	$args=array(
      		'category__in' => $category_ids, // catégorie de l'article 
      		'post__not_in' => array($post->ID), // Id de l'article
      		'showposts'=>5, // Nombre d'article
      		'orderby' => 'rand', // Ordre des articles 
      		'caller_get_posts'=>1 // on retire l'article principal pour ne pas le dupliqué
      	);
      
      
      $related_query = new WP_Query($args);
      
      	if ($related_query->have_posts()) {
      	?>
      <?php // Boucle avec les éléments (title,excerpt...) ?>
      		<ul>
      
      			<?php
      			while ($related_query->have_posts()) : $related_query->the_post();
      			?>
      				<li>
      					<a href="<?php the_permalink() ?>" > <?php the_title();?> </a>
      				</li>
      			<?php
      			endwhile;
      			?>	
      
      		</ul>
      <?php // Fin de la boucle ?>
      <?php } 
      	wp_reset_query(); // Reset de la boucle important !
      }
      ?>
      
      • seb dit :

        Merci Fred,

        sa fonctionne parfaitement.
        Par contre j’ai une question au sujet du style.
        Dans le cas ou je voudrais 4 articles aligné, faut il que j’ajoute 4 fois le code et faire du css ( float:left ) ou a t’il une solution plus simple et plus adapté ?

        Merci encore

  40. seb dit :

    Bonjour Fred.

    Je me pose une question, est il possible d’ajouter facilement une mini sidebar sur le coté du text article?

    Cette mini sidebar sera positionné sous l’image de l’aticle et entre le text et la sidebar principal.

    merci

  41. Sébastien dit :

    Bonjour fred,

    quéstion, y a t’il une variable pour afficher dans un article des sous articles aillent les méme mots cléf trouvé dans leurs titre de l’article ?

    Merci

Laisser un commentaire

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Pour affiché du code HTML, CSS, PHP, JAVASCRIPT utilisé le marqueur : [code][/code]