Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress页面ID不是帖子ID_Php_Wordpress - Fatal编程技术网

Php Wordpress页面ID不是帖子ID

Php Wordpress页面ID不是帖子ID,php,wordpress,Php,Wordpress,是否有任何方法可以获取在循环中显示帖子的当前页面的ID?我需要在header.php中获取此ID <?php $query = new WP_Query( array('post_type' => 'portfolio') ); while ( $query->have_posts() ) : $query->the_post(); ?> //here I adde

是否有任何方法可以获取在循环中显示帖子的当前页面的ID?我需要在header.php中获取此ID

<?php
     $query = new WP_Query( array('post_type' => 'portfolio') );
     while ( $query->have_posts() ) : 
          $query->the_post(); 
 ?>                           
 //here I added posts
 <?php endwhile; ?>

//这里我添加了帖子
get\u The\u ID()方法可能就是您所需要的:

 <?php get_the_ID(); ?> 


这取决于您希望从何处获取此ID。如果您试图在已设置为显示帖子的页面(即设置为“博客”的页面)上获取此ID,则需要使用:

$page_id = get_option( 'page_for_posts' );
如果要在任何其他页面上获取此信息,并且使用自定义查询,则可以使用以下方法获取此信息(在自定义循环之前):


因为您使用的是WP_Query和
the_post()
,所以您需要在使用
WP_reset_postdata()的自定义循环之后重置post数据
再次使用模板标记。我怀疑这就是你的问题所在-你正在用自定义循环劫持模板标记,而不是重置它们。

如果我在循环之外使用,无论是在循环之前还是之后,我都会得到最后一篇文章的ID,不是帖子所在页面的ID。为什么要在循环之外使用它?每个页面都有一个颜色自定义字段,页面的颜色取决于此值。所以我不想获取我在这个页面上显示的帖子的ID,但是获取显示帖子的页面的ID。也许我遗漏了什么,但是你不需要知道页面的ID就可以调用自定义字段。但是如果我调用函数来获取自定义字段值而没有ID,我会在循环中获取帖子的自定义字段,不是包含此循环的页面的自定义字段值。这是我想要实现的,但是如果我重置查询并使用全局变量,我只会获取第一篇文章的ID,而不是包含此文章的页面的ID。您可以发布更多代码吗?如果您在标准页面上,并在任何自定义查询之前请求全局$post变量,您将获得页面id。(在本例中,$post->id是页面id)我意识到,如果我使用默认permalinks运行您的代码,它将完美地工作。但是,如何使用结构为/localhost/web/%postname%/的自定义永久链接来实现这一点呢?这将适用于任何永久链接。如果没有,在你调用代码之前,有东西正在劫持你的$post。您需要精确地指出发生这种情况的地方——可能是在一个主题函数或插件中,该函数或插件在自定义查询后从不重置$post变量。要查看它的运行情况,请切换到默认主题,禁用所有插件,并将此代码放入header.php中。您将看到它在每个页面上打印出页面id,有或没有自定义永久链接。如您所述尝试过,但即使我使用带有id的默认永久链接,结果也是一样的,因此它不会在我的代码中劫持$post。使用localhost会影响它吗?
global $post;
$page_id = $post->ID;