WordPress : Afficher trois messages complets sur la page de catégorie, puis le reste des messages sous forme de titres uniquement

Publié par Jean-Michel le

Je construis un thème et sur ma page category.php je veux montrer plusieurs messages complets (disons 3, mais il faut pouvoir changer cela en 2 ou 1 facilement), puis le reste des messages de la catégorie comme liens de titre.

J’ai pas mal de code HTML dans ma boucle pour styliser mes messages et ajouter des champs personnalisés, donc désolé pour tout le code, mais voici à quoi ressemble ma page category.php maintenant. J’ai essayé quelques choses qui n’ont pas fonctionné, donc j’ai modifié ceci pour montrer mon code d’origine qui a juste une liste normale de messages. Je suis un peu nouveau dans l’édition de The Loop, j’apprécierais donc autant d’explications/clarté que possible.

    <?php
     /**
     * The template for displaying Category Archive pages.
     */

    get_header(); ?>

    <div id="primary" class="<?php
    $category = get_the_category();
            echo $category[0]->cat_name;
            ?>">


    <div id="feature-container" class="full-width-container">
        <div class="full-width-container content-page" id="tagline-wrapper">
                <div id="left-black"></div>
                <div class="page-width-container">
                    <div id="tagline-box">
                        <h1 class="category-title">Transactions</h1>
                    </div>
                </div>
            </div>
    </div>

    <div id="content-wrapper">

        <div id="project-menu" class="page-width-container">
            <?php wp_nav_menu( array( 'theme_location' => 'project-types' ) ); ?>
        </div>



        <div id="content" role="main" >



    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>


            <div class="story-container" class="module-container">
                <div class="our-story">
                    <div class="story-image">

            <?php
                    // check if the post has a Post Thumbnail assigned to it.
                if ( has_post_thumbnail() ) {
                    the_post_thumbnail();
                }
            ?>

                    </div>
                    <div class="story-text">
                        <article class="post" id="post-<?php the_ID(); ?>">
                            <div class="entry-container">

                <h2><a href="<?php the_permalink() ?>#content" rel="bookmark"   title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>

                <div class="project-details">

                    <p><span class="details-location"><?php
                        global $wp_query;
                        $postid = $wp_query->post->ID;
                        echo get_post_meta($postid, '_project-location', true);
                        wp_reset_query();
                        ?></span><br />
                       <span class="details-funding"><?php
                        global $wp_query;
                        $postid = $wp_query->post->ID;
                        echo get_post_meta($postid, '_funding-type', true);
                        wp_reset_query();
                        ?> | <?php
                        global $wp_query;
                        $postid = $wp_query->post->ID;
                        echo get_post_meta($postid, '_funding-source', true);
                        wp_reset_query();
                        ?></span><br />
                       <span class="details-value"><?php
                        global $wp_query;
                        $postid = $wp_query->post->ID;
                        echo get_post_meta($postid, '_project-value', true);
                        wp_reset_query();
                        ?></span></p>

                </div>



            <div class="entry">



                <?php the_content(); ?>



                <?php wp_link_pages(array('before' => __('Pages: ','html5reset'), 'next_or_number' => 'number')); ?>

            </div>

            <?php edit_post_link(__('Edit this entry','html5reset'), '<p>', '</p>'); ?>

            </div>

        </article>

                    </div>
                </div>

            </div>


            <?php endwhile; endif; ?>


</div><!-- #content -->
        </div>
        </div><!-- #primary -->

<?php get_footer(); ?>

Solution n°1 trouvée

J’ai trouvé moi-même une solution de contournement, bien qu’elle repose sur l’utilisation de plugins/widgets, ce que je ne préférerais pas.

J’ai simplement défini les paramètres de lecture pour afficher 2 articles, puis sous la boucle, j’ai ajouté une zone de widget et utilisé le widget Articles récents étendus pour afficher une liste de titres/liens. Ce widget vous permet d’ignorer un certain nombre de messages dans la liste, je l’ai donc configuré pour qu’il commence au message n ° 3. Il n’y avait pas d’option pour afficher uniquement les publications de la catégorie actuelle, j’ai donc dû également utiliser le plug-in Widget Context et créer des widgets individuels avec une catégorie spécifique à afficher sur chaque page de catégorie correspondante. Comme je l’ai dit, une solution un peu alambiquée, mais le résultat final est exactement ce que je voulais atteindre.

Solution n°2 trouvée

Vous pouvez réaliser la chose ci-dessus en utilisant le code suivant : vous devez d’abord boucler tous les messages et mettre le compteur lorsqu’il atteint plus de 2 arrêts pour imprimer un contenu, mais le titre sera toujours là.

      <?php $countPost=1;?>
      <?php if (have_posts()) : ?>
       <?php while (have_posts()) : the_post(); ?>
         <div class="post">
       <h2 id="post-<?php the_ID(); ?>">
 <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>

       <?php  if($countPost>2) : /*Condition for Content*/
         the_content();
         endif;
       ?>
          </div>
        <?php endwhile; ?>
    <div class="navigation">
    <div class="alignleft">
    <?php posts_nav_link('','','&laquo; Previous Entries') ?>
    </div>
    <div class="alignright">
    <?php posts_nav_link('','Next Entries &raquo;','') ?>
    </div>
      </div>
    <?php else : ?>
      <h2 class="center">Not Found</h2>
     <p class="center"><?php _e("Sorry, but you are looking for something that isn't here."); ?></p>
      <?php endif; ?>
    </div>

Pour plus de détails, veuillez consulter : https://codex.wordpress.org/The_Loop_in_Action

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *