WordPress循环有问题

时间:2020-09-09 作者:Jacob

我正在学习WordPress开发。我遇到了一个问题,但不知道我做错了什么

我想使用自定义模板显示页面上的所有帖子。我正在学习本教程https://developer.wordpress.org/themes/basics/the-loop/#blog-archive

So far:

1: 我已经创建了一个名为“主页”的自定义页面模板

2: 我已经创建了一个页面,并指定了页面模板“homepage”,并从设置面板将该页面设置为主页。

3: 在页面模板中,我添加了以下代码

/*
 * Template Name: Homepage
 * Template Post Type: page
 */
  
 get_header();  


if ( have_posts() ) : 
    while ( have_posts() ) : the_post(); 
        the_title( \'<h2 style="color:#fff;">\', \'</h2>\' ); 
        the_post_thumbnail(); 
        the_excerpt();
    endwhile; 
else: 
    _e( \'Sorry, no posts matched your criteria.\', \'textdomain\' ); 
endif; 

get_footer();

?>
以上代码仅显示当前页面标题和特色图片,而不是所有帖子标题和特色图片。

根据文档,我做的一切都是对的,但在前端,它并没有显示所有的帖子,你知道我做错了什么吗?

3 个回复
SO网友:Jacob Peattie

根据文档,我做的一切都是对的,但在前端,它没有显示所有的帖子,你知道我做错了什么吗?

文档中没有说明使用自定义页面模板来显示博客存档。如中所示template hierarchy 博客帖子存档的模板应该在主页上。php或索引。php。然后在该模板中添加循环,如中所述your link:

<?php 
if ( have_posts() ) : 
    while ( have_posts() ) : the_post(); 
        the_title( \'<h2>\', \'</h2>\' ); 
        the_post_thumbnail(); 
        the_excerpt();
    endwhile; 
else: 
    _e( \'Sorry, no posts matched your criteria.\', \'textdomain\' ); 
endif; 
?>
此模板不应具有Template Name: 标题,或指定给页面。相反,它将自动应用于您在“设置”中选择作为最新帖子页面的任何页面;正在读取。

请注意,模板层次结构中的所有模板都使用相同的基本循环:

while ( have_posts() ) : the_post(); 

endwhile; 
您不会从模板中查询任何帖子。WordPress自动查询正确的帖子,模板的唯一任务是显示已查询的帖子。使用哪个模板及其原因由上面链接的模板层次结构决定。

SO网友:nikhil Hadvani

请检查以下代码以获取所有帖子

$args = array(
    \'posts_per_page\' => -1,
    \'post_type\' => \'post\',
    \'orderby\' => \'date\',
    \'order\' => \'DESC\',
);

query_posts($args);
while (have_posts()): the_post();
the_title();
the_excerpt();
get_the_post_thumbnail_url($post->ID);
endwhile;
wp_reset_query();
请尝试以上代码。注:get_the_post_thumbnail_url(); 将返回特色图像URL。因此,您可以直接添加到img 标签式

<img src="<?php echo get_the_post_thumbnail_url(); ?>">

SO网友:t2pe

在特定页面或帖子中使用循环时,循环仅包含来自该页面或帖子的数据。因此,您所看到的内容是正确的,正如您已将该模板分配给特定页面一样。

如果希望看到的不仅仅是当前页面或帖子,那么需要基于自定义查询创建不同类型的循环。有几种不同的方法可以做到这一点,但如果您是Wordpress新手,那么从查看WP\\U查询开始确实会有所帮助。

当您使用WP\\u查询时,您可以指定要收集多少数据以及什么类型的内容以使用参数。然后使用循环遍历结果。

与其为您编写代码片段,我建议working through the support page on Wordpress 因为这是一个很好的地方,可以让您了解WP\\U查询。你可以继续回去。

特别是,请参阅指定要检索的帖子/页面数的参数,如果需要所有帖子/页面,则应将其设置为-1。

$query = new WP_Query( array( \'posts_per_page\' => -1 ) );

相关推荐

Loop through array of pages

我正在尝试递归地获取页面的所有子级(无限深度),我正在使用下面的函数,from this solution:function get_all_subpages($page, $args = \'\', $output = OBJECT) { if (! is_numeric($page)) $page = 0; $default_args = array( \'post_type\' => \'page\',&