web-dev-qa-db-fra.com

Comment afficher des articles récents sur la page d'accueil avec HTML personnalisé

Je souhaite afficher x (indécis) le nombre de publications récentes (pas plus de 10) sur ma page d'accueil. Pour chaque article, j'aimerais afficher le titre et un extrait du contenu. Je peux créer moi-même une requête SQL, mais je me demandais quelle était la fonction WordPress pour l'obtenir. Le plus proche que j'ai eu est <?php wp_get_archives('type=postbypost&limit=10&format=html'); ?>. Je voudrais aussi personnaliser le format HTML. Un exemple de la sortie que je voudrais ressemble à ceci

<div id="posts">
    <section class="post">
        <h2><a href="[post uri]">[post title]</a></h2>
        <p>[post snippet]</p>
    </section>
    <section class="post">
        <h2><a href="[post uri]">[post title]</a></h2>
        <p>[post snippet]</p>
    </section>
</div>
1
Tyler Crompton
<div id="posts">

<?php

    // define query arguments
    $args = array(
        'posts_per_page' => 8, // your 'x' goes here
        'nopaging' = true
        // possibly more arguments here
    );

    // set up new query
    $tyler_query = new WP_Query( $args );

    // loop through found posts
    while ( $tyler_query->have_posts() ) : $tyler_query->the_post();
        echo '<section class="post">'.
             '<h2><a href="'.
             get_permalink().
             '">'.
             get_the_title().
             '</a></h2><p>'.
             get_the_excerpt().
             '</p></section>';
    endwhile;

    // reset post data
    wp_reset_postdata();

?>

</div>

Par défaut, un extrait contient 55 mots. Pour une longueur d’extrait personnalisée, supprimez ce qui suit dans le functions.php de votre thème:

function tyler_excerpt_length( $length ) {
    return 70; // change number of words to your liking
}
add_filter( 'excerpt_length', 'tyler_excerpt_length' );

Si vous n'êtes pas satisfait du lien "Continuer la lecture" par défaut à la fin de l'extrait, déposez-le dans functions.php :

function tyler_excerpt_more( $more ) {
    return 'Read the whole post &gt;&gt;'; // again, change to your liking
}
add_filter( 'excerpt_more', 'tyler_excerpt_more' );

Si, puisque vous avez le lien de publication dans le titre, vous souhaitez que le lien "plus" de l'extrait ne soit pas affiché, demandez à la fonction ci-dessus de renvoyer une chaîne vide, c'est-à-dire return '';.

Lectures complémentaires:

5
Johannes Pille