WordPress.org

Ready to get started?Download WordPress

Forums

Choosing wich pages will show their excerpts on homepage (8 posts)

  1. Grun
    Member
    Posted 1 year ago #

    Hi everyone,

    I want to display excerpts from pages (with read more buttons) that I can choose from the admin. I found a way to display pages content or excerpt with a specific id but I would prefer not to have to play in the code if I want to display another page...

    My problem is that I can't find what code to write in my index.php file and how the page can but chosen...

    See the website I'm working on: http://www.test.denispaquet.com/wordpress-theme01/

    So the 3 blocs of text should be 3 page's excerpts that I can choose from the admin...

    Anyone can help me with this? I'm not a programmer...

    Thanks!

  2. riversatile
    Member
    Posted 1 year ago #

    C'est easy mon pote !
    Je vois que le site web http://www.test.denispaquet.com/ est Français, donc tu es Français !

    Tu dois déjà faire en sorte de faire afficher les 3 pages que tu souhaites sous forme d'extrait à la place des 3 cadres.

    1) Cette fonction PHP dans le code qui suit dit qu'on récupère les page du genre 'parent', dans l'ordre 'ascendant', de type 'page', avec les identifiants séparés par une virgule. Et on défini la requête dans 'new WP_Query($args);'

    Ensuite on s'occupe de la mise en page des informations retournées par 'new WP_Query($args);'

    2) On dit que 'Tant qu'il y des pages à afficher, on répète la boucle de la fonction', on présente le titre de la page avec une balise 'H2' sous forme d'un lien vers la page puis on place l'excerpt juste dessous avec 'the_excerpt', suivi du lien 'Lire la suite' (read more) qui pointe vers la page.
    Enfin on ferme la boucle de la fonction.

    Voilà le code :
    (extrait de http://chasesagum.com/display-multiple-page-excerpts)

    <?php
      $args=array(
      'orderby' =>'parent',
      'order' =>'asc',
      'post_type' =>'page',
      'post__in' => array(85,18,5,118,120,268),
       );
       $page_query = new WP_Query($args); ?>
    
    <?php while ($page_query->have_posts()) : $page_query->the_post(); ?>
       <div class="section">
        <h2><a href="<?php the_permalink();?>"><?php the_title();?></a></h2>
        <?php the_excerpt(); ?>
            <p class="readmore"><a href="<?php the_permalink();?>">Lire la suite</a></p>
        </div>
    <?php endwhile; ?>

    A la place des identifiants de page en exemple :
    array(85,18,5,118,120,268)
    tu mets les identifiants qui correspondent à tes 3 pages, par exemple :
    array(1,2,3)

    Apparement, vu comment est fait ton site, tu dois incorporer ce code à l’intérieur de la balise :
    <div id="content" role="main">
    qui se trouve dans le fichier index.php de ton thème WordPress.

    Cordialement

  3. Grun
    Member
    Posted 1 year ago #

    Merci beaucoup Riversatile pour cette réponse rapide! Très apprécié...

    J'ai essayé le code et ça fonctionne parfaitement. Cependant, il est attaché à certaines pages (id). Si je veux qu'une autre page remplace celle choisie, je dois aller changer son id dans le code. Est-ce qu'il y a un moyen pour que je puisse choisir quelle page sera affichée mais à partir du gestionnaire?

    Si je pose la question c'est que j'aimerais que le thème soit facilement intégré à WP par des gens qui ne connaissent rien à la programmation et qui ne voudront pas jouer dans le code.

    Merci encore pour ton aide!

  4. riversatile
    Member
    Posted 1 year ago #

    ...Oui, la ça demande beaucoup plus d'expérience, dans ce cas la, j'ai en général recours à une extension, car plus simple pour paramétrer les conditions d'affichage des pages/articles en fonction de 'custom fields', 'catégorie', 'tag', 'date de création', etc...

    Mais j'ai trouvé un bout de code qui permettrait de distinguer les pages que les gens veulent voir apparaître :

    1) Faut ajouter :
    'meta_query' => array(
    array(
    'key' => 'a la une',
    'value' => 'oui'
    'compare' => 'LIKE'

    Cette fonction affichera les pages dont le 'custom field' (champ personnalisé) nommé 'a la une' apparaît avec la valeur 'oui'.
    C'est à dire que si une personne créée une page et qu'elle souhaite la voir apparaître à la une, elle devra dans un champ personnalisé mettre 'a la une' et en face mettre la valeur 'oui' comme ceci :
    http://www.monsterup.com/upload/1351200416234.png
    puis enregistrer la page.

    2) Faut supprimer :
    'post__in' => array(85,18,5,118,120,268),

    Voici le code final :

    <?php
      $args=array(
      'orderby' =>'parent',
      'order' =>'asc',
      'post_type' =>'page',
      'meta_query' => array(
            array(
                'key' => 'a la une',
                'value' => 'oui'
                'compare' => 'LIKE'
       );
       $page_query = new WP_Query($args); ?>
    
    <?php while ($page_query->have_posts()) : $page_query->the_post(); ?>
       <div class="section">
        <h2><a href="<?php the_permalink();?>"><?php the_title();?></a></h2>
        <?php the_excerpt(); ?>
            <p class="readmore"><a href="<?php the_permalink();?>">Lire la suite</a></p>
        </div>
    <?php endwhile; ?>

    Source pour le petit bout de code :
    http://wordpress.org/support/topic/query_posts-where-custom-field-is-true

  5. Grun
    Member
    Posted 1 year ago #

    Salut!

    Ça a l'air super intéressant comme solution! Je vais essayer ça et je t'en donne des nouvelles!

  6. esmi
    Forum Moderator
    Posted 1 year ago #

    These are English language forums. Please use English.

  7. Grun
    Member
    Posted 1 year ago #

    Ok

  8. riversatile
    Member
    Posted 1 year ago #

    Sorry esmi, we'll give the solution in english when we will have found it.

Topic Closed

This topic has been closed to new replies.

About this Topic