Cómo obtener el extracto de una entrada o página usando post_excerpt

25 ago 2014, 02:18:20
Vistas: 31.6K
Votos: 3

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?

0
Todas las respuestas a la pregunta 3
0

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

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

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

cmsdeployed cmsdeployed
25 ago 2014 03:45:36

Habré hablado demasiado pronto. No funcionó

cmsdeployed cmsdeployed
25 ago 2014 04:15:49

Prueba con <?php the_excerpt(); ?>

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

25 ago 2014 09:48:13