获取header.php中所有帖子和页面的正确帖子ID

时间:2015-11-22 作者:jquery

我想获取循环外部的当前帖子/页面id(在header.php中),并将此id用于高级自定义字段插件以获取字段。

但我无法从首页、存档页(标签、作者、类别等)获得正确的id。

这是代码

if ( is_singular( \'post\' ) ) {
  $post_id = $wp_query->post->ID;
  echo \'post id\' . $post_id;
} elseif ( is_shop() ) {
  $post_id = get_option( \'woocommerce_shop_page_id\' );
  echo \'post id\' . $post_id;
} else {
  $post_id = get_queried_object_id();
  echo \'post id\' . $post_id
}
还有一个问题,有没有更好的方法来获取所有外部循环页面的id?我只是担心我的代码仍然缺少一些页面类型。

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

get_queried_object_id() 将返回当前正在查看的单个帖子或页面的ID,以及静态首页。对于任何类型的存档页面(日期、自定义帖子类型和主页存档除外),将返回以下内容:

正在查看的类别存档的类别ID

正在查看的当前标记存档的标记ID

正在查看的当前作者档案的作者ID

正在查看的当前术语页面的术语ID

如果您的情况并非如此,那么您、您的主题或您正在使用的插件很可能正在使用query_posts 在某处query_posts 使用中断主查询对象并将主查询对象重置为自定义查询query_posts. 这就是为什么你应该never ever ue公司query_posts

相关推荐

将Pemalink结构更改为/%post_id%/%postname%/

我当前正在使用permalink结构:/%年%/%月%/%日%/%postname%/我想将其更改为:/%post\\u id%/%postname%/我希望是:更快(数据库按post\\u id排序?)较短的URL(以及清晰可见的短文,只需去掉%postname%/即可)对搜索引擎优化更加友好-因为我的内容是“常青树”,所以发布日期不相关(并且写在每篇文章上,以及最后的更新日期)-因此这将提供较短的URL,与使用年/月/日结构相比没有任何缺点</问题:WordPress是否自动处理所有301重定向