使用WordPress 3.7.1,我试图在我创建的页面上显示所有常规帖子,比如TestPage。以下是我采取的步骤:
1- 生成一个名为:Test Page的自定义页面模板,并通过以下代码加载2- 基于测试页面模板生成名为TestPage的页面
更新页面后,我没有在页面上得到任何帖子,而我已经生成了一些!
<?php
/*
Template Name: Test Page
*/
?>
<?php get_header(); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h1><?php the_title() ;?></h1>
<?php the_content(); ?>
<?php endwhile; else: ?>
<p>Sorry, this page does not exist</p>
<?php endif; ?>
<?php get_footer(); ?>
他说的代码实际上是加载带有测试页面标题和内容的页面,而不是通过帖子!你能告诉我为什么会这样吗?
最合适的回答,由SO网友:s_ha_dum 整理而成
你能告诉我为什么会这样吗?
像您这样的循环假定数据来自“主查询”。您已经创建了一个自定义页面模板,因此该页面上的主查询将是单个“TestPage”数据。这就是它应该工作的方式。也就是说,if ( have_posts() ) : while ( have_posts() ) : the_post();
并不总是提供存档后的数据。
要获取帖子,您需要创建一个新的查询并循环该查询。像这样:
$newq = new WP_Query(array(\'post_type\'=>\'post\'));
if ($newq->have_posts()) {
while ($newq->have_posts()) {
$newq->the_post();
the_title();
}
}
你应该看看
Template Hierarchy 小心点,因为这可能根本不是你想要的方式。