the_title()显示第一个帖子标题而不是页面标题

时间:2017-11-20 13:28:55

标签: php wordpress wordpress-theming

我已经看到我不是第一个提出这个问题的人,但我找到的解决方案都没有给我带来帮助。 我正在开发一个在线商店,它针对不同的产品类别有不同的页面。每个类别都有自己的页面。我有一个模板文件,引用该类型的页面。每个页面标题是类别名称。 这是我的模板文件中的代码:

<div id="store-front" class="main-music-area">
  <?php if ( $products->have_posts() ) : $i = 1; ?>

      <header class="page-header">
         <?php
          the_title( '<h1 class="page-title">', '</h1>' );
         ?>
      </header><!-- .page-header -->

直到现在它工作得很好,但现在我得到的是第一个帖子标题,而不是页面/类别标题,我找不到原因。有什么建议? 感谢

2 个答案:

答案 0 :(得分:1)

我实际上发现使用single_post_title()给出了正确的答案,因为wp_title()还包括了站点描述。

答案 1 :(得分:0)

您正在使用has_posts进入&#34;循环&#34;所以the_title与产品循环而不是页面有关。

因此,您可以使用get_the_title()并使用网页ID或首先显示标题,然后才能使用have_posts功能。

例如:

  <?php rewind_posts(); ?>
  <header class="page-header">
     <?php
      the_title( '<h1 class="page-title">', '</h1>' );
     ?>
  </header><!-- .page-header -->
  <?php if ( $products->have_posts() ) : $i = 1; ?>

编辑:您可能在此部分之前开始循环,因此在调用the_title()之前使用rewind_posts()以重置上一个循环。

the_title()

  

显示或返回当前帖子的非转义标题。这个标签   可能只能在The Loop中使用,以获取外部帖子的标题   循环使用get_the_title。如果帖子受到保护或私密,   这将被&#34;保护:&#34;或者&#34;私人:&#34;添附   标题。

have_posts

  

作为副作用,has_posts开始,逐步执行或重置   环。在循环结束时,has_posts在调用后返回0   rewind_posts。