使GET_POST在循环中工作

时间:2015-08-01 作者:waterschaats

我正在使用get\\u post()通过id获取帖子;

$post = get_post(17);
$page = get_post_meta(17);
setup_postdata( $post ); 
include($page[\'_wp_page_template\'][0]);
收到帖子后,我将包含一个页面模板,其中包含:

while ( have_posts() ) : the_post();    
如果我打电话the_title() 从循环外部,我获得了使用get\\u post()调用的帖子的正确标题。如果我打电话the_title() 从循环中,我得到当前页面的标题。如何从get_post 进入循环。

2 个回复
SO网友:Pieter Goosen

如果您正在使用setup_postdata( $post ) 您需要使用全局$post 由于某种原因,没有这个特定的变量,它就不能工作。手动设置后$post 对于新值,您正在更改$post 全局,因此需要将其重置回主查询的当前帖子。

除此之外,千万不要将Wordpress设置的任何全局变量用作自定义变量,因为这可能会导致代码出现不可调试的问题和意外的结果。打破一个全局变量,然后尝试调试这样的问题,会让您大吃一惊;-)

在您的特定用例中,您需要添加wp_reset_postdata() 自定义查询完成后立即

$post = get_post(17);
$page_template = get_post_meta(17);
setup_postdata( $post ); 
include($page_template[\'_wp_page_template\'][0]);
wp_reset_postdata();

SO网友:Rarst

有多种方法可以处理这些事情,您的问题是稍微了解一些您需要的细节。

特定于标题部分-要检索特定帖子的标题,您根本不应该与全局性的文章混为一谈,只需执行以下操作$title = get_the_title( 17 ); 或者在那附近。

中,大多数案例模板标签都有一个版本,可以检索特定的帖子的数据,而不仅仅是循环中当前的帖子。还有一个较低的级别get_post_field() 检索帖子的原始或接近原始的数据。

结束

相关推荐

301 Redirect Loop

我有wordpress网站托管在openshift上,比如说。com。我正在重定向示例。com到www.example。com(非www到www)。我已经为www和非www版本创建了别名,并用app name更新了我的cname。我试着将非www cname记录指向www版本,但除了主页(相同的301重定向循环)外,它仍在工作,所以我将非www cname还原回应用程序url。现在www版本正在提供服务,但非www版本正在通过重定向到自身来创建301重定向循环。我的wordpress网站url是www.e