Wordpress在循环外获取页面ID

Ati*_*din 74 php wordpress

我想在Wordpress中启动循环之前获取页面ID.我在用

<body>

显然,它什么都不返回.

我只是想检查一个页面的ID,并<body>根据它添加一个类来标记.

The*_*dic 154

如果你使用漂亮的永久链接,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();
Run Code Online (Sandbox Code Playgroud)

  • `get_queried_object_id();`为我返回0.我认为问题是我在自定义查询后调用它.我想要de real page Id. (6认同)

Nad*_*han 9

您还可以创建一个通用函数来获取帖子的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;
} ?>
Run Code Online (Sandbox Code Playgroud)

简单地说:

$page_id = get_the_post_id();
Run Code Online (Sandbox Code Playgroud)


小智 7

使用此全球$ post代替:

global $post;
echo $post->ID;
Run Code Online (Sandbox Code Playgroud)

  • @ChristianDavén - 这不是真的.此代码适用于page.php的开头 (6认同)