当前页面ID返回不正确的值

时间:2018-09-26 作者:sridharnetha

我需要捕获当前页面id,在页脚中执行一些条件脚本,在我自己的插件函数挂钩中wp_footer.

这是我的插件代码,但页面id返回了错误的值?

<?php
/*
  Plugin Name: My Plugin
  Author:  GS
  Version: 1.1
*/
Function footer_page_id()
{
  global $post;
  echo \'<div> page_id:\'.$post->ID.\'</div>\';// output wrong value
  global $wp_query;      
  echo \'page_id:\'.get_the_ID();// output wrong value
  echo \'post_id:\'.$wp_query->post->ID; // output wrong value
  echo \'page_id:\'.$wp_query->get_queried_object_id(); // output always 0
  echo\'</br>\';exit;
}
 add_action(\'wp_footer\', \' footer_page_id \');
?>
提前谢谢。

2 个回复
SO网友:Jacob Peattie

要获取循环外部的当前页面ID,需要使用get_queried_object_id(); ($wp_query-> (没有必要)。

但是,这仅在查看单个页面时有效(因此,后端的所有页面下的任何内容)。

如果您正在查看博客、存档文件或类别,则它将不是有效的页面ID。在类别上,它将返回类别ID,但在存档文件或博客上,它将没有值,因为这些内容没有ID。

如果您的主题或其他插件使用query_posts(), 这可能会干扰此功能。使用wp_reset_query() 将修复此问题,但无论运行哪个主题或插件query_posts() 应该这样做。

如果您正在使用query_posts(), 不要。使用自定义查询new WP_Query()get_posts().

SO网友:Saran

对于上述要求,您可以像这样重写代码

function footer_page_id()
{
  global $post;
  echo \'<div> page_id:\'.$post->ID.\'</div>\';
 // remaining codes here

}
 add_action(\'wp_footer\', \'footer_page_id\');
请注意,为了检查wordpress函数中变量的值,请使用调试日志技术。

首先根据wordpress官方教程启用调试https://codex.wordpress.org/Debugging_in_WordPress

然后您可以找到debug。内部日志文件wp-content 文件夹

function footer_page_id()
{
  global $post;
  echo \'<div> page_id:\'.$post->ID.\'</div>\';// output wrong value
  error_log(print_r($post->ID,true));


}
 add_action(\'wp_footer\', \'footer_page_id\');
这样,您就可以检查插件中的变量值。

结束