web-dev-qa-db-fra.com

Comment obtenir un extrait de publication ou une page à l'aide de post_excerpt

J'utilise la boucle foreach suivante:

$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)
        } // if about page
   } // foreach

J'aimerais pouvoir obtenir l'extrait de la page ou poster au lieu de tout le contenu en utilisant

 $post->post_excerpt

Est-ce possible?

3
cmsdeployed

EDIT

On dirait que je ne vous comprends pas bien. Je pense que vous manquez le point du post_excerpt.

Lorsque vous créez un nouvel article ou une nouvelle page (autant que je sache), vous avez la possibilité de créer un extrait manuel dans la méta-boîte d'extraits (pour le rendre disponible, activez-le dans les options de l'écran lorsque vous cliquez sur le bouton Ajouter/Modifier). poste/page écran). Cet extrait manuel (ou extrait défini par l'utilisateur ) que vous entrez dans cette méta-boîte est enregistré sous post_excerpt, que vous pouvez ensuite récupérer avec $post->post_excerpt. Si cette méta-boîte est vide, c'est-à-dire si vous n'avez pas spécifié d'extrait manuel, rien ne sera retourné

Il ne fonctionne pas de la même manière que la balise de modèle, the_excerpt(), qui crée un extrait à la volée en utilisant le contenu pour créer un extrait, que BTW ne fonctionne pas sur les pages.

S'il vous plaît vérifier WP_Post

post_excerpt

chaîne

Extrait de post défini par l'utilisateur

EDIT 2

Si la méta-boîte de l'extrait manuel n'est pas affichée, vous pouvez simplement l'activer avec le code suivant

add_action( 'init', 'add_excerpts_to_pages' );
function add_excerpts_to_pages() {
     add_post_type_support( 'page', 'excerpt' );
}

RÉPONSE ORIGINALE

Votre utilisation de get_pages ici est fausse ici. get_pages n'est pas destiné à cet usage.

Vous devriez utiliser une requête personnalisée avec get_posts ou WP_Query

Vous pouvez faire quelque chose comme ceci pour afficher vos pages et extraits

<?php

// The Query
$the_query = new WP_Query('post_type=page' );

// The Loop
if ( $the_query->have_posts() ) {
  while ( $the_query->have_posts() ) {
    $the_query->the_post();
       the_title();
       the_excerpt();
    }
  } else {
  // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
4
Pieter Goosen
$query = new WP_Query( 'pagename=about' ); 

// The 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(); ?>

J'ai fini par utiliser le code ci-dessus. Je vais devoir aller avec plusieurs requêtes au lieu de foreach boucle. Je veux toujours savoir comment obtenir un extrait en utilisant la boucle foreach que j'ai soumise.

0
cmsdeployed

Ajoutez ce code dans functions.php, cela ajoutera le support des extraits dans Pages

<?php
    add_action('init', 'my_custom_init');
    function my_custom_init() {
        add_post_type_support( 'page', 'excerpt' );
    }
?>

Utilisez ceci pour afficher l'extrait ..

 $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);
        } // if about page
   } // foreach
0
Hassan Alvi