WordPress Post Excerpt не отображается в моем виджете недавних сообщений

Я использую get_posts для получения информации о сообщениях из базы данных. Он возвращает «Заголовок сообщения», «Миниатюра», «Категория сообщения» и «Отрывок сообщения». Все работает нормально, но проблема в том, что я не могу показать отрывок поста.

Вот мой код:

function widget ($args,$instance) {
extract($args);

$title = $instance['title'];
$catid = $instance['catid'];
$numberposts = $instance['numberposts'];
$date = $instance['date'];
$rss = $instance['rss'];

// retrieve posts information from database
global $wpdb;
$posts = get_posts('post_type=post&numberposts='.$numberposts.'&category='.$catid);
$out = '<ul>';

if ($posts) {
foreach($posts as $post) {
setup_postdata($post);
$out .= '<li>'.get_the_post_thumbnail($post->ID,'medium').'</li>';
$out .= '<li><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></li>';
$out .= '<li>'.$post->post_excerpt.'</li>';
if ($date) $out .= '<li>'.date('d/m/Y', strtotime($post->post_date_gmt)).'</li>';
}
}

if ($rss) $out .= '<li><a href="'.get_category_link($catid).'feed/" class="rss">Category RSS</a></li>';
$out .= '</ul>';

//print the widget for the sidebar
echo $before_widget;
echo $before_title.$title.$after_title;
echo $out;
echo $after_widget;
}
}

0

Решение

$post->post_excerpt не получается работать так, как вы думаете. Большинство людей думают, что это так же, как тег шаблона the_excerpt()и это не

the_excerpt() генерируется путем усечения get_the_content(), $post->post_excerpt не генерируется вообще, так как это определяется пользователем. Этот отрывок представляет собой текст выдержки, добавленный пользователем вручную на экране редактирования сообщения в мета-поле выдержки. (Это мета-поле по умолчанию скрыто, но его можно включить на вкладке «Параметры экрана» в верхней части экрана). Если пользователь не указал отрывок вручную, $post->post_excerpt ничего не вернет, вот почему вы видите это поведение

Вы уже настроили свои постданные, так что вы можете просто использовать теги шаблона напрямую, вместо $post->post_excerpt, ты можешь использовать the_excerpt()

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

Благодаря комментарию, приведенному ниже, я не учел, что выдержка не должна быть отражена сразу. В этом случае вы бы использовали get_the_excerpt() который не повторяет текст, а просто извлекает его.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]