Php Wordpress页面ID不是帖子ID
是否有任何方法可以获取在循环中显示帖子的当前页面的ID?我需要在header.php中获取此IDPhp 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
<?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;