Cómo obtener el extracto de una entrada o página usando post_excerpt
Estoy usando el siguiente bucle 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)
} // si es la página about
} // foreach
Me gustaría poder obtener el extracto de la página o entrada en lugar de todo el contenido usando
$post->post_excerpt
¿Es esto posible?
EDITAR
Parece que de alguna manera te malinterpreté. Creo que no estás entendiendo el propósito de post_excerpt
.
Cuando creas una nueva entrada o página (que yo sepa, también funciona para páginas), tienes la opción de crear un extracto manual en el cuadro meta del extracto (para hacerlo visible, simplemente actívalo en las opciones de pantalla en el menú desplegable cuando estés en la pantalla de añadir/editar entrada/página). Este extracto manual (o extracto definido por el usuario) que ingresas en ese cuadro meta se guarda bajo post_excerpt
, que luego puedes recuperar con $post->post_excerpt
. Si ese cuadro meta está vacío, es decir, si no has especificado un extracto manual, no se devolverá nada.
No funciona igual que la etiqueta de plantilla, the_excerpt()
que crea un extracto automáticamente usando el contenido para generarlo, que por cierto no funciona en páginas.
Por favor, revisa WP_Post
post_excerpt
string
Extracto de la entrada definido por el usuario
EDITAR 2
Si el cuadro meta del extracto manual no se muestra, puedes activarlo simplemente con el siguiente código
add_action( 'init', 'add_excerpts_to_pages' );
function add_excerpts_to_pages() {
add_post_type_support( 'page', 'excerpt' );
}
RESPUESTA ORIGINAL
Tu uso de get_pages
aquí es incorrecto. get_pages
no está diseñado para este uso.
Deberías usar una consulta personalizada con get_posts
o WP_Query
Puedes hacer algo como esto para mostrar tus páginas y extractos
<?php
// La Consulta
$the_query = new WP_Query('post_type=page' );
// El Loop
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
the_title();
the_excerpt();
}
} else {
// no se encontraron entradas
}
/* Restaurar los datos originales del Post */
wp_reset_postdata();

Añade este código en functions.php, agregará soporte para extractos en Páginas
<?php
add_action('init', 'my_custom_init');
function my_custom_init() {
add_post_type_support( 'page', 'excerpt' );
}
?>
Usa esto para mostrar el extracto...
$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);
} // si es la página about
} // foreach

Gracias. Lo había pensado, pero estaba más interesado en ver la opción de extracto en el área de administración que no pensé que podría ser mi problema. Nuevamente, gracias. :)

$query = new WP_Query( 'pagename=about' );
// El 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(); ?>
Terminé usando el código anterior. Tendré que utilizar múltiples consultas en lugar del bucle foreach. Todavía me gustaría saber cómo obtener el extracto usando el bucle foreach que envié.
