最後の投稿をタイトル付きで表示するための簡単なショートコードです。
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
という名前の配列キーがあることを示していますが、常に空の状態で表示されています。
投稿の明示的な抜粋はありませんので、post_excerpt
の値は空です。投稿抜粋が空の場合、the_excerpt()
は投稿コンテンツから抜粋を生成しますが、基本的にwp_get_recent_posts()
のラッパーである関数get_posts()
は生成しません。
このコードはうまくいくかもしれません、私はthe_post()
関数がすることに似たpost
オブジェクトを作成するためにsetup_postdata
を使っています、それで今あなたはループで持っている関数を使うことができます。
$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;