#1 楼
您可以使用get_page()
返回静态页面的$post
对象:$page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;
编辑
同样,您可以使用
get_post()
返回帖子的$post
对象:$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;
评论
使用此代码时,短代码仍然有效吗?
– Tim Baas
2014年2月20日在21:35
只是发现事实并非如此。使用setup_postdata($ post);首先,在那之后,您可以使用the_content();。
– Tim Baas
2014年2月20日在21:39
您可以只运行apply_filters('the_content',$ post_object-> post_content);
–内森·鲍威尔(Nathan Powell)
17年1月1日在7:30
#2 楼
要获取循环之外的帖子内容,您可以编写如下内容global $post;
$content = $post->post_content;
if ( !empty( $content ) ) :
echo $content;
endif;
#3 楼
如果您的内容包含简码,则应使用:$post_id = 22;
$post_object = get_post( $post_id );
echo do_shortcode( $post_object->post_content );
评论
不要做简码kovshenin.com/2013/dont-do_shortcode
–布拉德·道尔顿(Brad Dalton)
15年6月24日在21:52
除了说“这可能很慢”和“您可以使用短代码调用的功能”之外,该页面没有提供一个避免使用do_shortcode的令人信服的理由。这些原因仅在最简单的情况下最不重要。如果在其他地方生成了简码,或者有多个简码,或者将简码与其他内容和标记混合在一起,则失败。没有令人信服的理由,我不同意避免使用do_shortcode的声明。这闻起来像过早的优化。
–杰夫
17年4月17日在21:35
而且,这还增加了您的代码与原始短代码的代码之间的耦合。如果简码的后备方法曾经被重命名或签名发生了变化,您的代码就会中断。
–杰夫
17年4月17日在21:37
#4 楼
为了完整起见,在蒂姆·哈里斯(Tim)上面的评论的基础上,并受斯蒂芬·哈里斯(Stephen Harris)的启发,启用the_content()
的解决方案是:$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );
插入等),并且可以使用简码。
评论
这几乎使我的浏览器崩溃了:/删除了&符号,但仍然没有解析短代码。
–扎德
2015年10月5日在8:12
#5 楼
由于您知道目标帖子ID(302),因此您可能会发现可以在循环外使用的这种速记语法很有用(尽管其性能与任何其他替代方法几乎相同:)echo(get_post_field('post_content',302));
#6 楼
您可以使用get_post_data()
函数在循环外获取帖子。将此代码放置在functions.php function get_post_data($postId) {
global $wpdb;
return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId");
}
,然后添加此代码段,以便对该过程进行更多控制
<?php $data = get_post_data(302);
echo $data->post_date; // post date
echo $data->post_title; // post title
echo $data->post_content; // post content
echo $data->comment_count; // comments number
?>
#7 楼
如前所述,您可以使用带有get_post
和$post_object->post_content
的解决方案,但不要忘了在使用该发布对象之前添加检查:function get_post_content( $post_id = null ) {
$post_object = get_post( $post_id );
if ( ! $post_object ) { return ''; }
//else
return apply_filters('the_content', $post_object->post_content);
}
echo get_post_content( $other_post_id );
#8 楼
在寻找相同的东西,我很惊讶没有人这么说:$pageID = 302;
echo get_the_content(null, false, $pageID);
很好! :)
#9 楼
您可以简单地调用get_the_content(postId)<?php echo get_the_content($postId); ?>
评论
实际上,这是不可能的。当有更多链接时,第一个参数是内容:codex.wordpress.org/Function_Reference/get_the_content
– joshcanhelp
17年8月24日在22:40
#10 楼
使用wp_reset_postdata();
,它将起作用。(已编辑)<?php
$args = array(
'post_type' => 'posttype',
'p' => 'post_id'
);
$the_query = new WP_Query( $args );
if( have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php the_content(); ?>
<?php endwhile; endif;
wp_reset_postdata();
?>
posttype可以是“ post”,“ page”或您的自定义帖子类型。这里p = 302是您的帖子ID。希望它能起作用。
评论
除非需要中断页面功能,否则切勿使用query_posts。始终对自定义查询使用WP_Query或get_posts :-)
–Pieter Goosen
15年4月4日在6:55
是的..你是对的..它也可以Wp_Query ..找到相同的结果..
–Jahirul Islam Mamun
2015年4月5日在19:23
还有pre_get_posts过滤器和the_post。这么多细节。
–内森·鲍威尔(Nathan Powell)
17年1月1日在7:35
#11 楼
您可以将内容放在X类别中,并在之前使用query_post,如下所示: <?php query_posts('cat=X&showposts=1'); ?>
<?php while (have_posts()) : the_post(); ?>
<?= get_the_content(); ?>
<?php endwhile; ?>
评论
不知道ID吗?利用get_queried_object_id()! developer.wordpress.org/reference/classes/wp_query / ...