我写了一篇关于this here, 但以下是要点的总结:
the_content
只能在“循环内”使用“循环内”只能通过调用setup_postdata()
和global $post
.然后你需要打电话来收拾一下wp_reset_postdata()
下面的代码提供了从帖子ID检索帖子内容的功能。它不同于
@NickYoung 回答是,您收到的内容是
not 存储在
post_content
posts表的列,而不是内容
after 已经过去了
the_content
过滤器(例如,已解析的短代码等)。
代码
/**
* Display the post content. Optinally allows post ID to be passed
* @uses the_content()
* @link http://stephenharris.info/get-post-content-by-id/
* @link https://wordpress.stackexchange.com/questions/142957/use-the-content-outside-the-loop
* @param int $id Optional. Post ID.
* @param string $more_link_text Optional. Content for when there is more text.
* @param bool $stripteaser Optional. Strip teaser content before the more text. Default is false.
*/
function sh_the_content_by_id( $post_id=0, $more_link_text = null, $stripteaser = false ){
global $post;
$post = get_post($post_id);
setup_postdata( $post, $more_link_text, $stripteaser );
the_content();
wp_reset_postdata( $post );
}