Cum să obții extrasul unei postări sau pagini folosind post_excerpt
Folosesc următoarea buclă 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)
} // dacă este pagina about
} // foreach
Aș dori să pot obține extrasul paginii sau postării în loc de tot conținutul folosind
$post->post_excerpt
Este posibil acest lucru?
EDITARE
Se pare că te-am înțeles greșit. Cred că nu ai înțeles scopul post_excerpt
.
Când creezi un articol nou sau o pagină (cred că și pentru pagini), ai posibilitatea să creezi un rezumat manual în caseta meta pentru rezumat (pentru a o face disponibilă, activeaz-o din meniul "Opțiuni ecran" în timpul editării/creării unui articol/pagină). Acest rezumat manual (sau rezumat definit de utilizator) pe care îl introduci în acea casetă meta este salvat sub post_excerpt
, pe care îl poți prelua cu $post->post_excerpt
. Dacă acea casetă meta este goală, adică dacă nu ai specificat un rezumat manual, nu va fi returnat nimic.
Nu funcționează la fel ca eticheta de șablon, the_excerpt()
care creează un rezumat din mers folosind conținutul pentru a crea un rezumat, care apropo nu funcționează pe pagini.
Te rog verifică WP_Post
post_excerpt
string
Rezumatul articolului definit de utilizator
EDITARE 2
Dacă caseta meta pentru rezumatul manual nu este afișată, o poți activa simplu cu următorul cod
add_action( 'init', 'add_excerpts_to_pages' );
function add_excerpts_to_pages() {
add_post_type_support( 'page', 'excerpt' );
}
RĂSPUNS ORIGINAL
Folosirea get_pages
aici este greșită. get_pages
nu este destinat acestui scop.
Ar trebui să folosești o interogare personalizată cu get_posts
sau WP_Query
Poți face ceva de genul acesta pentru a afișa paginile și rezumatele
<?php
// Interogarea
$the_query = new WP_Query('post_type=page' );
// Bucla
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
the_title();
the_excerpt();
}
} else {
// nu s-au găsit articole
}
/* Restabilirea datelor originale Post */
wp_reset_postdata();

Adăugați acest cod în functions.php, acesta va adăuga suport pentru rezumate în Pagini
<?php
add_action('init', 'my_custom_init');
function my_custom_init() {
add_post_type_support( 'page', 'excerpt' );
}
?>
Utilizați acest cod pentru a afișa rezumatul..
$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);
} // dacă este pagina about
} // foreach

Mulțumesc. M-am gândit la asta, dar eram mai degrabă neinteresat să văd opțiunea de excerpt în zona de administrare, încât nu m-am gândit că ar putea fi problema mea. Din nou, mulțumesc. :)

$query = new WP_Query( 'pagename=about' );
// Bucla 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(); ?>
Am ajuns să folosesc codul de mai sus. Va trebui să merg cu interogări multiple în loc de bucla foreach. Totuși, încă doresc să aflu cum să obțin rezumatul folosind bucla foreach pe care am trimis-o.
