_title()显示第一个帖子的标题,而不是页面标题?

时间:2013-03-12 作者:Wordpressor

我偶尔会遇到这个问题,不知道是什么原因造成的,有什么想法吗?

<?php get_header(); ?>
    <div class="content" role="main">
            <h1><?php the_title(); ?></h1>
            <?php get_template_part( \'loop\', \'index\' ); ?>
    </div>
<?php get_footer(); ?>
对于普通页面,\\u title返回“页面标题”。

但对于博客(使用上面索引文件中的loop.php),它会返回“First posts title”。

有什么想法吗?

5 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

the_title 是循环标记。它“显示或返回当前帖子的标题”,应该在循环内部使用,而不是在循环外部使用。

你所做的——在循环外调用它——并不完全正确,你得到的结果不一致。结果是:

$post 变量在页面加载的早期就设置为循环中的第一个帖子。对于某些页面,例如循环中只有一篇文章的单篇文章页面,这意味着$post 是“你所在的页面”——或多或少。对于归档页面,它是循环中的第一个页面。你可以把var_dump($post); 之前wp_head 运行并查看变量是否已设置

  • 标签,如the_title 使用该全局$post 变量您必须通过几个函数来跟踪它,但最终您可以get_post 功能,您可以see in the source 事实就是这样。在这种情况下,链条是the_title->get_the_title->get_post

    如果你想要“你所在的页面”,你有时需要使用get_queried_object, 但请注意,因为它会根据页面返回不同类型的数据,对于某些页面,它会返回不同类型的数据NULL. 在其他情况下,您最好使用is_home, is_category, etc. conditionals 而不是依赖于这样的查询数据。事实上,在大多数情况下,使用这些条件或只需调用wp_title 正如托肖所建议的,但你试图在其中使用这个词的上下文让我怀疑这是否正确。加上wp_title 可以并且经常被插件(例如SEO插件)操纵,这可能是您想要的,也可能不是您想要的。

  • SO网友:fuxia

    在归档页面上–博客、年份、类别等–使用wp_title() 获取页面标题。the_title() 依赖于单个帖子的数据。

    SO网友:Gince George

    在归档页面上–博客、年份、类别等–使用single_cat_title() 获取页面标题。希望这对你有帮助

    SO网友:Rohit Kumar Shrivastava

    有一件事可以帮助你

    WordPress Dashboard>Settings>Reading>Posts Page
    
    在我的情况下工作过。

    SO网友:Carsten Hagemann

    今天我遇到了同样的问题,但我找到了一个很好的解决方案:

      <?php 
        if ( is_front_page() ) {
          echo "Home";
        } else if (is_single()) { // POST, not needed for my site
          echo "";
        } else if (is_page()) { // PAGE
          echo get_the_title();
        } else if(is_category()) {
          $arr = get_the_category();
          if ( ! empty( $arr ) ) {
            echo esc_html( $arr[0]->name );   
          }
        }
    

    结束

    相关推荐

    Query by post title

    我为我的一个网站使用了自定义帖子类型。自定义帖子类型包含临时卡片数据以及一些自定义字段。我开发了一个android应用程序来管理android设备上的这些项目。在android应用程序中,我想保留搜索功能,这将帮助管理员用户搜索卡号来管理这些卡号。我可以使用wordpress查询按标题搜索。Code $args = array(\"post_type\" => \"mytype\", \"name\" => $title); $query = get_posts( $args