Come visualizzare i post recenti nella home page con HTML personalizzato

5 dic 2011, 19:20:27
Visualizzazioni: 15.1K
Voti: 1

Sto cercando di visualizzare un numero x (da decidere) di post recenti (massimo 10) nella mia home page. Per ogni post, vorrei mostrare il titolo e un estratto del contenuto. Potrei creare una query SQL personalizzata, ma mi chiedevo quale sia la funzione WordPress per ottenere questo risultato. La soluzione più vicina che ho trovato è <?php wp_get_archives('type=postbypost&limit=10&format=html'); ?>. Vorrei anche poter personalizzare il formato HTML. Un esempio dell'output che desidero ottenere è il seguente:

<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>
0
Tutte le risposte alla domanda 1
3
<div id="posts">

<?php
    // definisce gli argomenti della query
    $args = array(
        'posts_per_page' => 8, // qui va il tuo numero 'x'
        'nopaging' = true
        // eventualmente altri argomenti qui
    );

    // imposta la nuova query
    $tyler_query = new WP_Query( $args );

    // ciclo attraverso i post trovati
    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;

    // resetta i dati del post
    wp_reset_postdata();

?>

</div>

Per default un estratto è composto da 55 parole. Per una lunghezza personalizzata dell'estratto, inserisci questo nel file functions.php del tuo tema:

function tyler_excerpt_length( $length ) {
    return 70; // cambia il numero di parole a tuo piacimento
}
add_filter( 'excerpt_length', 'tyler_excerpt_length' );

Se non sei soddisfatto del link "Continua a leggere" predefinito alla fine dell'estratto, inserisci questo in functions.php:

function tyler_excerpt_more( $more ) {
    return 'Leggi tutto il post &gt;&gt;'; // anche qui, cambia a tuo piacimento
}
add_filter( 'excerpt_more', 'tyler_excerpt_more' );

Se, dato che hai già il link al post nel titolo, vuoi che il link "altro" dell'estratto non venga mostrato, fai in modo che la funzione sopra restituisca una stringa vuota, cioè return '';.

Ulteriori letture:

5 dic 2011 20:03:25
Commenti

Wow, questa risposta ha superato di gran lunga le mie aspettative. Vorrei poter votarla più volte. Grazie mille.

Tyler Crompton Tyler Crompton
6 dic 2011 04:29:50

http://codex.wordpress.org/Template_Tags/the_excerpt Intendevi 55 parole?

Tyler Crompton Tyler Crompton
6 dic 2011 04:33:16

@TylerCrompton Parole! Certo, cosa stavo pensando. E quanto potrebbero essere informative 55 caratteri? Che stupido da parte mia.

Johannes Pille Johannes Pille
6 dic 2011 13:19:53