我在index.php文件中经常看到以下代码。我了解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顶部,一次在帖子循环浏览时再次出现)。

评论


谢谢Shramee。试图找出它时,我在

中找到了博客索引页的标题,但实际上并没有出现。我认为有些人只是用它来帮助使用屏幕阅读器的人,然后隐藏实际的文本,如果新手未评论/记录,这会使新手感到困惑。

– olli
16-4-23在13:53

嗯,这有助于了解在哪些上下文中使用了帖子(例如在上面的“新闻”示例中),但主要用于SEO,H1在帮助搜索机器人更好地了解页面内容方面发挥了重要作用。

– shramee
16-4-24在6:16



#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