哪些 PHP 代码可用于检索 WordPress 主题中的当前页面名称?
到目前为止我看到的所有解决方案:
the_title()
get_page()->post_name
get_post()
但这些不适用于包含帖子条目的页面。它们都将返回最新博客条目的名称。
换句话说,假设您在 WordPress 中创建了一个名为“我的新闻”的页面。该页面被设置为“发布页面”。在页面上添加几个帖子。现在,可以使用什么 API 来检索字符串“my-news”而不是最新帖子的名称?
我发现以下变量似乎有效。
$wp_query->queried_object->post_name
这实际上是页面名称 (slug) 的 URL 友好版本,这也是我一直在寻找的。这是使用默认模板(二十和十)测试的。我真的不确定为什么下面给出的两个变量在我的网站上不起作用。
现在,为什么这些信息隐藏得如此之深?
WordPress 全局变量$pagename应该可供您使用。我刚刚尝试了您指定的相同设置。
$pagename
$pagename在文件 wp-includes/theme.php 中定义,在函数内部get_page_template(),当然在解析页面主题文件之前调用它,因此它在页面模板中的任何位置都可用。
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; }