我有一个简单的短代码来显示最近的帖子及其标题,除了:
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;