Come ottenere l'excerpt di un post o pagina usando post_excerpt
Sto usando il seguente loop foreach
:
$pages = get_pages(array ('post_type' => 'page','sort_column' => 'menu_order',));
foreach ($pages as $page) {
$apage = $page->post_name;
if ( $apage =='about') {
echo apply_filters('the_content', $page->post_content)
} // se è la pagina about
} // foreach
Vorrei poter ottenere l'excerpt della pagina o del post invece dell'intero contenuto utilizzando
$post->post_excerpt
È possibile?
MODIFICA
Sembra che in qualche modo ti abbia frainteso. Penso tu stia mancando il punto riguardo post_excerpt
.
Quando crei un nuovo articolo o pagina (per quanto ne so anche per le pagine), hai l'opportunità di creare un estratto manuale nel meta box dell'estratto (per renderlo disponibile, basta abilitarlo nel menu delle opzioni dello schermo quando sei nella schermata di aggiunta/modifica articolo/pagina). Questo estratto manuale (o estratto definito dall'utente) che inserisci in quel meta box viene salvato sotto post_excerpt
, che puoi poi recuperare con $post->post_excerpt
. Se quel meta box è vuoto, cioè se non hai specificato un estratto manuale, non verrà restituito nulla.
Non funziona come il tag template, the_excerpt()
che crea un estratto al volo utilizzando il contenuto per generare un estratto, che tra l'altro non funziona sulle pagine.
Per favore dai un'occhiata a WP_Post
post_excerpt
string
Estratto dell'articolo definito dall'utente
MODIFICA 2
Se il meta box dell'estratto manuale non viene visualizzato, puoi semplicemente attivarlo con il seguente codice
add_action( 'init', 'add_excerpts_to_pages' );
function add_excerpts_to_pages() {
add_post_type_support( 'page', 'excerpt' );
}
RISPOSTA ORIGINALE
Il tuo utilizzo di get_pages
qui è sbagliato. get_pages
non è pensato per questo utilizzo.
Dovresti usare una query personalizzata con get_posts
o WP_Query
Puoi fare qualcosa come questo per visualizzare le tue pagine e gli estratti
<?php
// La Query
$the_query = new WP_Query('post_type=page' );
// Il Loop
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
the_title();
the_excerpt();
}
} else {
// nessun articolo trovato
}
/* Ripristina i dati originali dell'articolo */
wp_reset_postdata();

Aggiungi questo codice nel file functions.php per aggiungere il supporto agli estratti nelle Pagine
<?php
add_action('init', 'my_custom_init');
function my_custom_init() {
add_post_type_support( 'page', 'excerpt' );
}
?>
Utilizza questo codice per visualizzare l'estratto..
$pages = get_pages(array ('post_type' => 'page','sort_column' => 'menu_order'));
foreach ($pages as $page) {
$apage = $page->post_name;
if ( $apage =='about') {
echo apply_filters('the_excerpt', $page->post_content);
} // se è la pagina about
} // foreach

Grazie. Ci avevo pensato, ma ero più interessato a non vedere l'opzione per l'estratto nell'area di amministrazione, tanto che non pensavo potesse essere il mio problema. Ancora grazie. :)

$query = new WP_Query( 'pagename=about' );
// Il Loop
while ( $query->have_posts() ) {
$query->the_post(); ?>
<header class="entry-header">
<h2 class="entry-title">
<?php the_title(); ?>
</h2>
</header>
<div class="entry-summary">
<?php the_excerpt(); ?>
</div>
<?php }
wp_reset_postdata(); ?>
Alla fine ho utilizzato il codice sopra. Dovrò procedere con query multiple invece del ciclo foreach. Vorrei comunque ancora sapere come ottenere l'estratto utilizzando il ciclo foreach che ho inviato.
