Come usare the_excerpt() in una pagina WordPress
Sto cercando di utilizzare la funzione PHP the_excerpt() per mostrare estratti dai post recenti del blog in una pagina di destinazione principale senza successo. Qualche idea?
<div id="home_news" class="prefix_9 grid_3">
<div id="newsbox" style="display: block;">
<div id="news">
<h2>Benvenuto</h2>
<div id="news_content">Benvenuto su... torna presto per una nuova selezione di dipinti ad olio, ultime stampe e biglietti di auguri</a>.
<?php
// Crea una nuova query per i post della categoria 'blog'
$my_query = new WP_Query('category_name=blog&posts_per_page=1');
// Loop attraverso i post trovati
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->505;
// Mostra l'estratto del post
the_excerpt();
endwhile; ?>
</div>
</div>
</div>
</div>
the_excerpt()
non funzionerà in una landing page. Deve essere utilizzato all'interno del loop del post per poter funzionare.
All'interno del loop, WordPress popola una variabile globale $post
con le informazioni sul post corrente. Poi, vari tag del template fanno riferimento a questa variabile globale e restituiscono il contenuto.
In base alle modifiche sopra...
Hai quasi strutturato correttamente il tuo loop. Ma invece, dovrai:
- Creare la tua query personalizzata per ottenere l'ultimo post
- Visualizzare il post
- Ripristinare la query originale
Il codice qui sotto dovrebbe fare ciò di cui hai bisogno:
<div id="home_news" class="prefix_9 grid_3">
<div id="newsbox" style="display: block;">
<div id="news">
<h2>Benvenuto</h2>
<div id="news_content">Benvenuto su... torna presto per una nuova selezione di dipinti a olio, ultime stampe e biglietti augurali</a>.
<?php
// Crea una nuova query e ottieni l'ultimo post dalla categoria "blog"
$my_query = new WP_Query( 'category_name=blog&posts_per_page=1' );
// Se abbiamo un post, popola le variabili globali necessarie ed esegui il loop
if ( $my_query->have_posts() ) : while ( $my_query->have_posts() ) : $my_query->the_post();
// Mostra l'estratto del post nella pagina
the_excerpt();
endwhile; endif;
// Reimposta i dati del loop principale così le variabili globali avranno i valori corretti
wp_reset_postdata();
?>
</div>
</div>
</div>
</div>

Grazie per la tua risposta. È possibile aggiungere il loop all'interno di una pagina? Ho provato a sperimentare... Senza successo finora.

Sì. Dai un'occhiata agli esempi di loop multipli nel Codex.

Ho modificato la mia domanda perché non riuscivo a far apparire il formato markdown nel mio commento. È necessario specificare il post->ID? L'ID è una variabile globale con nome?

Dopo aver chiamato the_post()
popoli una variabile globale $post
che ha un membro ID
.

get_the_ID()
restituisce l'ID numerico del post corrente quando utilizzato all'interno del loop.

Ho inserito il valore numerico. Nessun risultato. Altre idee? Consigli su come risolvere il problema?

Vedi le mie modifiche. All'interno del loop (dove ho the_excerpt()
) puoi utilizzare qualsiasi tag template standard di cui hai bisogno. Se ti serve l'ID numerico, usa get_the_ID()
per ottenerlo o the_ID()
per fare echo
. Se hai bisogno del titolo, usa get_the_title()
come al solito.

Teoricamente il codice sopra dovrebbe essere valido e funzionare. Ho una categoria intitolata 'blog'. Sono un po' preoccupato di fare modifiche. Ho lasciato il codice così com'è e l'ho inserito nella pagina, ma ancora non viene renderizzato. C'è altro che devo fare?

Guardando il tuo sito, sembra che il PHP non venga elaborato... quindi la mia domanda è: dove stai inserendo questo codice?

OK, ecco perché non funziona. Il codice PHP viene rimosso nell'editor HTML/Visuale di WordPress. Devi aggiungere questo codice direttamente al template della pagina utilizzato dalla landing page oppure installare un plugin per l'esecuzione PHP in WordPress per far funzionare il codice PHP inline.

Capito. Ci sono quasi. Solo che ora sto ottenendo un altro errore... Idee? http://www.chazsouthard.com/art/

Errore di battitura nel mio codice (ora corretto sopra). Dovrebbe essere wp_reset_postdata()

Ora funziona, ma è in conflitto con il CSS. C'è un modo per limitare il numero di caratteri nell'estratto? Penso che sia questo a causare problemi con il codice.

Leggi Controllare la lunghezza dell'estratto utilizzando i filtri.

Finalmente ho risolto. Grazie per avermi supportato durante la confusione. C'è un modo per inserire correttamente una miniatura all'interno dell'estratto?

Anche se inizialmente non era chiaro nel post originale, penso che questa possa essere una buona soluzione. Basta creare uno shortcode per inserire l'estratto nel corpo della pagina. (Questa non è una buona idea se vuoi farlo su ogni pagina. È invece utile se vuoi utilizzarlo occasionalmente su alcune pagine nel corpo.)
Ecco il codice da inserire nel tuo functions.php:
function the_excerpt_shortcode() {
return get_the_excerpt();
}
add_shortcode( 'the_excerpt', 'the_excerpt_shortcode' );
Una volta fatto, inserisci semplicemente questo nel corpo della tua pagina:
[the_excerpt]
E il gioco è fatto.
Se stai utilizzando Twenty Ten, Twenty Eleven o altri temi che agganciano il filtro excerpt_more, potresti dover modificare lo shortcode per rimuovere un link automatico "Continua a leggere...", ma per molti temi non è necessario. Considera questo un punto di partenza.
