2016-01-17 29 views
0

我有一个表单收集产品上的数据,然后将数据放入wp_posts表和wp_postmeta表中。我可以在ID的基础上创建一个永久链接,如果我接着对此永久链接进行wp_redirect,则WordPress应尝试显示该页面。在没有循环的模板中获取页面ID

该页面的模板名为listing.php,它没有Loop。它的唯一目的是通过将wp_posts表和wp_postmeta表中的数据放入不同的div来显示这些产品页面。但我想知道该模板如何获得正在构建的页面的ID,以便它可以访问wp_posts表和wp_postmeta表。我想做一些类似$meta = get_post_meta(get_the_ID())的事情,但codex说你只能在Loop中使用get_the_ID(),我没有其中之一。那么我应该怎么做呢?

谢谢

回答

1

获取当前页面的页面ID的最健全和最可靠的方法是使用查询对象。这两个功能get_queried_object()get_queried_object_id()将保持当前页面(的类别,标签,分类和作者的网页也将保持当前类别,标签项和作者信息分别)的信息

让页面ID ,只需使用

$page_id = get_queried_object_id(); 
echo $page_id; 
+0

所有这三种方法都在我的模板中为我获取ID,没有Loop。我怀疑他们希望你把它放在Loop中,这样你就可以得到Loop正在处理的当前帖子的ID。对我来说,我可以把它放在任何地方,因为模板只处理一个页面。 – Steve

0

您可以从全局$ post变量中获取帖子ID。

global $ post; echo $ post-> ID;

+0

该codex表示“$ post包含来自The Loop中当前帖子的数据”。当我没有Loop时它会有效吗? – Steve

+0

我可能是错的,但我认为$ post全局数据是在页面模板被加载之前设置的,所以它应该有所有的发布信息,即使没有循环。 –

相关问题