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

我已经看到我不是第一个提出这个问题的人, 但是我发现的所有解决方案都不适合我。我正在开发一个在线商店, 其中具有针对不同产品类别的不同页面。每个类别都有自己的页面。而且我有一个模板文件引用了这种类型的页面。每个页面标题都是类别名称。这是我的模板文件中的代码:

< 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 -->

到现在为止一切正常, 但是现在我得到的是第一个帖子标题, 而不是页面/类别标题, 而我找不到原因。有什么建议么?谢谢
#1你正在使用进入” 循环” 的have_posts, 因此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 Loop中使用, 要在循环之外获取帖子的标题, 请使用get_the_title。如果帖子是受保护的或不公开的, 将在标题前加上” 受保护:” 或” 私人:” 字样。
have_posts
副作用是, have_posts将启动, 逐步执行或重置” 循环” 。在循环结束时, have_posts在调用rewind_posts之后返回0。
#2【the_title()显示第一个帖子标题,而不是页面标题】实际上, 我发现使用single_post_title()给出了正确的响应, 因为wp_title()还包括了站点描述。

    推荐阅读