WordPress 在循环外部获取页面 ID

2022-08-30 08:27:26

我想在WordPress中开始循环之前获取页面ID。我正在使用

$page = get_query_var('page_id');

显然,它不返回任何内容。

我只想检查页面的ID,并添加一个基于它的类来标记。<body>


答案 1

如果你使用漂亮的永久链接,将不起作用。get_query_var('page_id')

相反,请从全局$wp_query 中获取查询的对象 ID:

// Since 3.1 - recommended!
$page_object = get_queried_object();
$page_id     = get_queried_object_id();


// "Dirty" pre 3.1
global $wp_query;

$page_object = $wp_query->get_queried_object();
$page_id     = $wp_query->get_queried_object_id();

答案 2

您还可以创建一个泛型函数来获取帖子的 ID,无论是在循环外部还是在循环内部(处理这两种情况):

<?php

/**
 * @uses WP_Query
 * @uses get_queried_object()
 * @see get_the_ID()
 * @return int
 */
function get_the_post_id() {
  if (in_the_loop()) {
       $post_id = get_the_ID();
  } else {
       global $wp_query;
       $post_id = $wp_query->get_queried_object_id();
         }
  return $post_id;
} ?>

只需执行以下操作:

$page_id = get_the_post_id();

推荐