小编典典

如何在 WordPress 中获取当前页面名称?

all

哪些 PHP 代码可用于检索 WordPress 主题中的当前页面名称?

到目前为止我看到的所有解决方案:

  • the_title()
  • get_page()->post_name
  • get_post()
  • 等等

但这些不适用于包含帖子条目的页面。它们都将返回最新博客条目的名称。

换句话说,假设您在 WordPress 中创建了一个名为“我的新闻”的页面。该页面被设置为“发布页面”。在页面上添加几个帖子。现在,可以使用什么 API
来检索字符串“my-news”而不是最新帖子的名称?


我发现以下变量似乎有效。

$wp_query->queried_object->post_name

这实际上是页面名称 (slug) 的 URL
友好版本,这也是我一直在寻找的。这是使用默认模板(二十和十)测试的。我真的不确定为什么下面给出的两个变量在我的网站上不起作用。

现在,为什么这些信息隐藏得如此之深?


阅读 70

收藏
2022-08-17

共1个答案

小编典典

WordPress 全局变量$pagename应该可供您使用。我刚刚尝试了您指定的相同设置。

$pagename在文件 wp-includes/theme.php
中定义,在函数内部get_page_template(),当然在解析页面主题文件之前调用它,因此它在页面模板中的任何位置都可用。

  • 尽管似乎没有记录,但$pagename仅在使用永久链接时才设置 var。我想这是因为如果你不使用它们,WordPress 不需要页面 slug,所以它不会设置它。

  • $pagename如果您将页面用作静态首页,则不设置。

  • $pagename这是/wp-includes/theme.php里面的代码,它使用了你在无法设置时指出的解决方案:

--

if ( !$pagename && $id > 0 ) {
  // If a static page is set as the front page, $pagename will not be set. Retrieve it from the queried object
  $post = $wp_query->get_queried_object();
  $pagename = $post->post_name;
}
2022-08-17