wp_queryループ内でショートコードが実行できない時

WP_Queryで投稿記事をループして出力する際、どうしてもショートコードが実行されない。
調べてみると、hava_posts()を使ってthe_content()で出力するのが一般的らしい。
しかしショートコード内で出力するには、the_contentで出力したくない。
return変数に渡すには、変数をdo_shortcode()に通せば出力できることが判明した!

ダメなケース

function test_get_post() {
	$query = new WP_Query($args);
	$posts = $query->posts;
	foreach  ($posts as $post) {
		$html .= $post->post_title;
		$html .= $post->nl2br($post->post_content); 
	}
	return $html;
}
add_shortcode('hoge_get_post','test_get_post');

修正後

function test_get_post() {
	$query = new WP_Query($args);
	$posts = $query->posts;
	foreach  ($posts as $post) {
		$html .= $post->post_title;
		$html .= do_shortcode($post->nl2br($post->post_content)); 
	}
	return $html;
}
add_shortcode('hoge_get_post','test_get_post');

コメントを残す

メールアドレスが公開されることはありません。