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

使用Timber开发WordPress主题时,推荐的文件夹与文件结构是什么?

Hey there! 刚上手Timber+Twig+ACF搭WordPress主题,文件结构确实容易乱——我当初第一次用的时候也踩过这个坑,给你分享一套业内常用的清晰结构,绝对能帮你理顺:

核心文件结构(基于WordPress规范+Timber最佳实践)

1. 主题根目录的核心PHP文件

  • 保留WordPress必需的基础文件:style.css(主题声明头)、functions.php(核心配置入口,用来注册Timber、ACF字段、自定义文章类型等)、index.php(作为fallback模板,里面只需要简单调用Timber的渲染方法)、screenshot.png(主题预览图)
  • 把自定义PHP功能拆分成模块化子文件夹:
    • inc/:存放各类功能模块,比如timber-setup.php(配置Timber的视图路径、全局变量)、acf-fields.php(注册ACF字段组,或者配置ACF的JSON同步)、custom-post-types.php(定义自定义文章类型和分类法)
    • template-parts/:如果有需要复用的PHP逻辑片段(比如面包屑数据处理),可以放这里,但记住Timber的核心是「逻辑与视图分离」,这里只处理数据获取,渲染交给Twig

2. Twig模板的规整(重点!)

Timber的优势就是让视图脱离PHP逻辑,所以Twig文件要单独建views/文件夹统一管理,按功能拆分:

  • layouts/:存放基础布局模板,比如base.twig(包含完整HTML骨架、头部、尾部,用{% block content %}留出自定义内容区域)、single-layout.twig(文章页专属布局)、archive-layout.twig(归档页布局)
  • pages/:对应WordPress的页面模板,比如home.twig(首页)、about.twig(关于页)、contact.twig(联系页),这些模板都继承layouts/base.twig,只需要填充content区块的内容
  • partials/:存放可复用的Twig片段,比如header.twig(头部导航、logo)、footer.twig(版权信息、底部菜单),还可以专门建acf-components/子文件夹,把ACF字段对应的渲染组件放这里,比如testimonial.twig、featured-card.twig——把ACF字段调用封装在这里,复用起来超方便
  • single/:对应自定义文章类型的单页模板,比如single-project.twig(项目单页)、single-event.twig(活动单页)
  • archive/:归档页模板,比如archive-project.twig(项目列表归档)

3. ACF相关的额外整理

  • 开启ACF的JSON同步功能,在functions.php里设置JSON存储路径为acf-json/,这样字段组可以纳入版本控制,团队协作也不会丢配置
  • 遇到ACF灵活内容字段这类复杂布局时,把每个布局对应的Twig片段放到views/partials/acf-components/里,在页面模板里用循环调用这些片段,代码会非常整洁

4. 静态资源的管理

  • 根目录建assets/文件夹,按类型细分:
    • css/:存放编译后的样式文件(如果用SCSS,可再建scss/放源文件,编译后输出到css/)
    • js/:自定义脚本,比如main.js、acf-enhance.js(处理ACF相关的交互逻辑)
    • images/:主题用到的静态图片,比如logo、背景图
    • fonts/:自定义字体文件

举个直观的目录结构示例

your-theme/
├── assets/
│   ├── css/
│   ├── js/
│   ├── images/
│   └── fonts/
├── inc/
│   ├── timber-setup.php
│   ├── acf-fields.php
│   └── custom-post-types.php
├── views/
│   ├── layouts/
│   │   └── base.twig
│   ├── pages/
│   │   ├── home.twig
│   │   └── about.twig
│   ├── partials/
│   │   ├── header.twig
│   │   ├── footer.twig
│   │   └── acf-components/
│   │       └── testimonial.twig
│   ├── single/
│   │   └── single-project.twig
│   └── archive/
│       └── archive-project.twig
├── acf-json/
├── functions.php
├── style.css
├── index.php
└── screenshot.png

这样拆分后,你找文件的逻辑会清晰很多:PHP管数据和配置,Twig管视图渲染,静态资源单独归类,后期维护或者加新功能都不会乱。如果有特定需求(比如多语言、电商功能),再对应添加子文件夹就行~

内容的提问来源于stack exchange,提问作者Juan Antonio Rodríguez Gabriel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:01:37