我有一个简单的短代码来显示最近的帖子及其标题,除了:
add_shortcode(\'latest3\', function(){
$recent_posts = wp_get_recent_posts(
array(
\'numberposts\' => 3,
\'orderby\' => \'post_date\',
\'order\' => \'DESC\',
\'post_type\' => \'post\',
\'post_status\' => \'publish\'
), ARRAY_A);
$output = \'<h2>Latest posts</h2>\';
foreach ( $recent_posts as $recent ) {
$output .= \'<h3>\'.$recent["post_title"].\'</h3>\';
$output .= $recent["post_excerpt"];
}
return $output;
});
但出于某种原因,摘录输出为空。
print_r($recents)
显示确实存在一个名为
post_excerpt
但始终显示为空。
最合适的回答,由SO网友:Nicolai Grossherr 整理而成
这个post_excerpt
值为空,因为您的帖子没有明确的摘录。虽然the_excerpt()
是否从帖子内容中生成摘要如果帖子摘要为空,则函数wp_get_recent_posts()
, 它基本上是get_posts()
, 没有。
SO网友:Tomás Cot
这个代码可以工作,我正在使用setup_postdata
创建post
对象类似于函数the_post()
是的,所以现在可以使用循环中的函数。
$recent_posts = wp_get_recent_posts(
array(
\'numberposts\' => 3,
\'orderby\' => \'post_date\',
\'order\' => \'DESC\',
\'post_type\' => \'post\',
\'post_status\' => \'publish\'
), OBJECT);
$output = \'<h2>Latest posts</h2>\';
foreach ( $recent_posts as $recent ) {
setup_postdata($recent);
$output .= \'<h3>\'.get_the_title().\'</h3>\';
$output .= get_the_excerpt();
}
wp_reset_postdata();
return $output;