is_front_page()
在查看网站首页(无论显示博客文章索引还是静态页面)时返回true,而is_home()
在查看博客文章索引(无论显示在首页还是静态页面)时返回true。对于以下代码的使用,我仍然有些困惑-<?php if ( have_posts() ) : ?>
<?php if ( is_home() && ! is_front_page() ) : ?>
<header>
<h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
</header>
<?php endif; ?>
对于为什么这段代码如此受欢迎的任何解释,都深表感谢。
#1 楼
当静态页面设置为显示帖子时,这将显示页面标题。例如
我在主页上显示帖子...
它'我什么也不会做。
如果我说在新闻标题的页面上显示帖子,
它将在H1中显示新闻。
无论何时在页面上显示帖子,都显示页面标题,但是在首页(主页)上显示博客帖子时,则不显示页面标题。
我们这样做是因为如果它在首页上...它将显示第一个帖子的标题,使其出现两次(一次在H1顶部,一次在帖子循环浏览时再次出现)。
#2 楼
这是正确的做法:if ( is_front_page() && is_home() ) {
// Default homepage
} elseif ( is_front_page()){
// Static homepage
} elseif ( is_home()){
// Blog page
} else {
// Everything else
}
这是显示或更改主页和博客页面内容的唯一(正确)方法。
#3 楼
我不确定“热门”,在我看来似乎并不那么流行(但是后来我看不到那么多主题)。您似乎很好地理解了每个条件的作用,所以这不应该让您感到困惑。这结合了条件来检查是否显示了博客索引,并且该索引不在首页。
,我猜
single_post_title()
的原因是它显示了$wp_query->queried object
的标题(由主查询设置为当前上下文),而不是全局变量$post
(通过迭代循环设置)。在某些情况下,这些条件是相同的,但在情况检查不一样的情况下。循环将包含帖子,但查询的对象将是页面(除非我把事情弄混了:)。
评论
我最近一直在浏览大量的模板,这很常见。您是对的,我了解循环的作用,只是我不理解为什么人们会选择以这种特定方式进行循环。为什么使用single_post_title而不是the_title()?
– olli
16-4-23在13:28
评论
谢谢Shramee。试图找出它时,我在
中找到了博客索引页的标题,但实际上并没有出现。我认为有些人只是用它来帮助使用屏幕阅读器的人,然后隐藏实际的文本,如果新手未评论/记录,这会使新手感到困惑。
– olli
16-4-23在13:53
嗯,这有助于了解在哪些上下文中使用了帖子(例如在上面的“新闻”示例中),但主要用于SEO,H1在帮助搜索机器人更好地了解页面内容方面发挥了重要作用。
– shramee
16-4-24在6:16