You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中the_post_thumbnail()在front-page.php不生效问题求助

问题根本原因

archive.php属于WordPress原生归档模板,默认主查询($wp_query)自动对应对应分类/标签/日期的文章列表,所以直接调用have_posts()可以正常获取到文章。但front-page.php的主查询默认匹配后台「设置-阅读」中指定的首页内容:如果设置为静态页,主查询只会返回该静态页的单条数据,不会返回文章列表,所以模板片段里的循环直接失效。

解决步骤

1. 修改section-portfolio.php代码,改用自定义查询

把原来的循环替换为自定义文章查询,示例代码如下:

<?php
// 自定义查询,获取已发布的文章,可自行调整参数
$custom_posts = new WP_Query(array(
    'post_type' => 'post', // 如果是自定义文章类型就改成对应别名
    'posts_per_page' => 8, // 展示的文章数量
    'post_status' => 'publish'
));

if($custom_posts->have_posts()): while($custom_posts->have_posts()): $custom_posts->the_post();?>
    <div class="col-6">
        <a id="client-project" href="<?php the_permalink();?>">
            <?php the_post_thumbnail();?>
        </a>
    </div>
<?php endwhile; 
// 重置主查询,避免影响页面其他逻辑
wp_reset_postdata();
else: ?>
    <p>暂无展示的文章</p>
<?php endif;?>

2. front-page.php调用方式不变

还是和archive.php一样用<?php get_template_part('includes/section-portfolio');?>调用即可,无需直接复制循环代码到front-page,模板片段的方式更利于后续维护。

注意事项

  • 先排查文件名拼写问题:你创建的模板片段文件名为section-portoflio.php,如果调用时使用get_template_part('includes/section-portfolio'),会因为拼写不一致导致模板加载失败,需确保文件名和调用参数拼写完全匹配。
  • 如果要查询的是自定义文章类型(比如作品/项目),把post_type参数改成对应文章类型的别名即可
  • 可根据需求调整查询参数,比如加category_name指定分类,加orderby自定义排序规则
  • 自定义查询后必须加wp_reset_postdata()重置全局的$post变量,否则会导致页面其他调用文章信息的逻辑出错

内容的提问来源于stack exchange,提问作者Mateus Rodrigues

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:39:02