Come ottenere l'excerpt di un post o pagina usando post_excerpt

25 ago 2014, 02:18:20
Visualizzazioni: 31.6K
Voti: 3

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?

0
Tutte le risposte alla domanda 3
0

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();
25 ago 2014 08:19:58
3

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
25 ago 2014 03:09:46
Commenti

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. :)

cmsdeployed cmsdeployed
25 ago 2014 03:45:36

Ho parlato troppo presto. Non ha funzionato

cmsdeployed cmsdeployed
25 ago 2014 04:15:49

Prova <?php the_excerpt(); ?>

Hassan Alvi Hassan Alvi
25 ago 2014 08:07:20
0
$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.

25 ago 2014 09:48:13