Как получить отрывок записи или страницы с помощью post_excerpt
Я использую следующий цикл 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)
} // если страница about
} // foreach
Я хотел бы получить отрывок страницы или записи вместо всего содержимого, используя
$post->post_excerpt
Это возможно?
РЕДАКТИРОВАНО
Кажется, я вас немного не так понял. Думаю, вы упускаете суть post_excerpt
.
Когда вы создаёте новую запись или страницу (насколько я знаю, для страниц тоже), у вас есть возможность создать ручной анонс в метабоксе "Анонс" (чтобы он был доступен, просто включите его в выпадающем меню "Настройки экрана" при создании/редактировании записи/страницы). Этот ручной анонс (или пользовательский анонс), который вы вводите в этом метабоксе, сохраняется в поле post_excerpt
, и его можно получить с помощью $post->post_excerpt
. Если этот метабокс пуст, то есть если вы не указали ручной анонс, ничего не будет возвращено.
Это работает не так, как шаблонный тег the_excerpt()
, который создаёт анонс на лету, используя содержимое записи, и, кстати, не работает для страниц.
Пожалуйста, ознакомьтесь с WP_Post
post_excerpt
string
Пользовательский анонс записи
РЕДАКТИРОВАНО 2
Если метабокс ручного анонса не отображается, вы можете просто активировать его с помощью следующего кода:
add_action( 'init', 'add_excerpts_to_pages' );
function add_excerpts_to_pages() {
add_post_type_support( 'page', 'excerpt' );
}
ИСХОДНЫЙ ОТВЕТ
Ваше использование get_pages
здесь неверно. get_pages
не предназначен для такого использования.
Вам следует использовать пользовательский запрос с помощью get_posts
или WP_Query
.
Вы можете сделать что-то вроде этого для отображения ваших страниц и анонсов:
<?php
// Запрос
$the_query = new WP_Query('post_type=page' );
// Цикл
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
the_title();
the_excerpt();
}
} else {
// записи не найдены
}
/* Восстановить оригинальные данные записи */
wp_reset_postdata();

Добавьте этот код в functions.php, он добавит поддержку кратких описаний для Страниц
<?php
add_action('init', 'my_custom_init');
function my_custom_init() {
add_post_type_support( 'page', 'excerpt' );
}
?>
Используйте этот код для вывода краткого описания..
$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);
} // если страница "О нас"
} // foreach

Спасибо. Я думал об этом, но меня больше интересовало, что опция отрывка не отображается в админке, и я не подумал, что это может быть моей проблемой. Еще раз спасибо. :)

$query = new WP_Query( 'pagename=about' );
// Цикл
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(); ?>
В итоге я использовал приведенный выше код. Мне придется использовать несколько запросов вместо цикла foreach. Я все еще очень хочу узнать, как получить краткое описание (excerpt) с помощью цикла foreach, который я отправил ранее.
