在没有循环的模板中获取页面 ID

Getting page ID in a template that has no loop

我有一个收集产品数据的表格,然后将数据放入 wp_posts table 和 wp_postmeta table。我可以围绕 ID 建立一个永久链接,如果我对这个永久链接执行 wp_redirect,WordPress 应该会尝试显示该页面。

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

谢谢

您可以从全局 $post 变量中获取 post id。

全球$post; echo $post->ID;

获取当前页面的页面ID最可靠可靠的方法是使用og查询对象。 get_queried_object()get_queried_object_id() 这两个函数将保存当前页面的信息( 在类别、标签、分类法和作者页面上它将保存当前类别、标签、术语和作者信息分别)

要获取页面 ID,只需使用

$page_id = get_queried_object_id();
echo $page_id;