Как получить отрывок записи или страницы с помощью post_excerpt

25 авг. 2014 г., 02:18:20
Просмотры: 31.6K
Голосов: 3

Я использую следующий цикл 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

Это возможно?

0
Все ответы на вопрос 3
0

РЕДАКТИРОВАНО

Кажется, я вас немного не так понял. Думаю, вы упускаете суть 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();
25 авг. 2014 г. 08:19:58
3

Добавьте этот код в 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
25 авг. 2014 г. 03:09:46
Комментарии

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

cmsdeployed cmsdeployed
25 авг. 2014 г. 03:45:36

Поторопился. Не сработало

cmsdeployed cmsdeployed
25 авг. 2014 г. 04:15:49

Попробуйте <?php the_excerpt(); ?>

Hassan Alvi Hassan Alvi
25 авг. 2014 г. 08:07:20
0
$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, который я отправил ранее.

25 авг. 2014 г. 09:48:13