跳到主要内容

Vite 8 + Tailwind 4 + Blade:WordPress 主题现代化的完整方案

Vite 8 + Tailwind 4 + Blade:WordPress 主题现代化的完整方案

如果你正在做 WordPress 主题开发,可能已经受够了传统的 PHP 模板 + jQuery + 手工编译 CSS。这篇教程会带你用现代化的工具链重新搭一个主题,全程不超过 30 分钟。

为什么是 Vite 8

Vite 是当前前端的事实标准构建工具。Vite 8 在 WordPress 生态里特别好用,原因有几个:

  • 冷启动几乎零延迟 — ESM 原生支持,不像 Webpack 要先打包整个依赖图
  • HMR 热更新 — 改一行 CSS,浏览器立刻看见,不用刷新页面
  • Tailwind 4 深度集成 — 官方 @tailwindcss/vite 插件零配置
  • Sage 11 默认支持 — Roots 团队的 Sage starter theme 已经把 Vite 集成好

项目初始化

假设你已经有了一个 WordPress 站点(PHP 8.1+,MySQL 5.7+)。我们直接用 Sage 11:

cd /www/wwwroot/your-site/wp-content/themes/

composer create-project roots/sage your-theme-name

cd your-theme-name

npm install

安装完后你会看到这样的目录结构:

your-theme-name/

├── app/ # PHP 业务代码

│ ├── Providers/ # 服务提供者

│ ├── View/Composers/ # 视图数据注入

│ └── setup.php

├── resources/

│ ├── views/ # Blade 模板

│ ├── css/app.css

│ └── js/app.js

├── public/build/ # 编译产物(git 忽略)

├── vite.config.js

├── package.json

└── composer.json

配置 vite.config.js

Sage 11 默认的 vite.config.js 已经够用,但如果你要加自定义路径别名,可以这样:

import { defineConfig } from 'vite'

import tailwindcss from '@tailwindcss/vite';

import laravel from 'laravel-vite-plugin'

export default defineConfig({

base: '/app/themes/your-theme-name/public/build/',

plugins: [

tailwindcss(),

laravel({

input: [

'resources/css/app.css',

'resources/js/app.js',

],

refresh: true,

}),

],

})

配置 Tailwind 4

Tailwind 4 抛弃了 tailwind.config.js,改成 CSS 驱动的配置。在 resources/css/app.css 里:

@import "tailwindcss" theme(static);

@source "../../app/*/.php";

@source "../*/.blade.php";

@source 指令告诉 Tailwind 去扫描哪些文件,找出实际用到的 class。没有用到的 class 在 build 时会被 tree-shake 掉。

Blade 模板基础

Sage 默认用 Laravel 的 Blade 引擎。WordPress 用 Blade 的好处是:

  • 组件化 — 复用 header / footer / card 不再复制粘贴
  • 指令丰富@if @foreach @include @yield 比原生 PHP 优雅
  • Laravel 生态 — 可以用 Eloquent、Collection、Carbon(Acorn 自带)

一个简单的文章模板:

<article class="max-w-2xl mx-auto py-8">

<h1 class="text-3xl font-bold">{{ $title }}</h1>

<div class="text-gray-500 mt-2">{{ get_the_date() }}</div>

<div class="prose mt-6">

@php(the_content())

</div>

</article>

开发与构建

# 开发(带 HMR)

npm run dev

生产构建

npm run build

重点:Vite 8 build 完成后,必须把 public/build/manifest.json 复制到 public/manifest.json,否则 Acorn 5 找不到 manifest,会导致页面引用旧的 CSS/JS hash,404 全裸:

cp public/build/manifest.json public/manifest.json

我把这个步骤写到了 build.sh,一行命令搞定:

#!/usr/bin/env bash

npx vite build

cp public/build/manifest.json public/manifest.json

chown -R www:www public/

Acorn 5 vendor patch 必做

Sage 11 用 Acorn 5.0.0-beta.2,但有两个地方对 Vite 8 不兼容。直接 vendor patch:

Patch 1: vendor/roots/acorn/src/Roots/Acorn/Assets/Manifest.php 第 47 行附近:

// 原版

$value = $manifest[$key] ?? null;

// 改成(Vite 8 manifest 格式是 object)

$value = $manifest[$key] ?? null;

if (is_array($value)) {

$value = (object) $value;

}

Patch 2: vendor/roots/acorn/src/Roots/Acorn/Assets/Vite.php 第 917 行附近 — 绕过全局 asset() 函数的覆盖。

把 patch 文件存到 patches/,写个 reapply.shcomposer update 后重新打。我已经在文章底部 memory/2026-08-17-wptheme.md 记录了详细步骤。

总结

这套工具链在性能、DX、维护性上都比传统 WordPress 主题开发好得多。Vite 8 + Tailwind 4 + Blade 让你的主题代码更接近现代前端项目结构,但保留 WordPress 生态的所有好处(hooks、plugin、admin UI)。

下一篇会讲怎么用这套栈做主题设置面板(自研 Settings API + Acorn View Composer)。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注