WordPress Post Excerpt未显示在我的Recent Post Widget中

时间:2014-10-06 15:05:41

标签: php widget wordpress

我使用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;
 }
}

1 个答案:

答案 0 :(得分:0)

$post->post_excerpt无法以您认为的方式开展工作。大多数人认为这与模板标记the_excerpt()相同,而且不是

截断the_excerpt()生成

get_the_content()。根本没有生成$post->post_excerpt,因为这是用户定义的。此摘录是用户在摘录元框的后期编辑屏幕中手动添加的摘录文本。 (默认情况下,此元框是隐藏的,但可以在屏幕顶部的&#34;屏幕选项&#34;选项卡中启用)。如果用户未指定手动摘录,$post->post_excerpt将不返回任何内容,这就是您看到此行为的原因

您已经设置了postdata,因此您只需直接使用模板代码,因此代替$post->post_excerpt,您可以使用the_excerpt()

修改

感谢下面的评论,我没有考虑到摘录不应该立即回应。在这种情况下,您将使用不会回显文本的get_the_excerpt(),而只是检索它。