1
1
Fork
You've already forked wordpress
0
If I were going to make a WordPress theme in 2025 this is what it would look like
  • PHP 69.7%
  • TypeScript 16.4%
  • CSS 11.3%
  • JavaScript 2.5%
2026年03月11日 11:07:33 +00:00
.config Add roadmap notes 2026年03月11日 11:07:26 +00:00
public Handle components scripts, global and conditional 2026年03月11日 10:41:40 +00:00
.editorconfig More typescript and update formatting rules 2026年03月10日 17:27:41 +00:00
.env.example Make sure WordPress works 2025年11月07日 10:52:00 +00:00
.gitignore Complete support for lazy loaded images 2026年03月08日 15:21:52 +00:00
.prettierrc.yaml More typescript and update formatting rules 2026年03月10日 17:27:41 +00:00
composer.json Scaffold out a basis for a wordpress theme 2025年11月06日 14:41:48 +00:00
composer.lock Better scaffold out project files 2025年11月07日 10:28:01 +00:00
eslint.config.js xo was really noisy and conflicts with prettier too much 2026年03月11日 10:41:14 +00:00
package-lock.json xo was really noisy and conflicts with prettier too much 2026年03月11日 10:41:14 +00:00
package.json xo was really noisy and conflicts with prettier too much 2026年03月11日 10:41:14 +00:00
README.md Add roadmap notes 2026年03月11日 11:07:26 +00:00
wp-cli.yml Make sure WordPress works 2025年11月07日 10:52:00 +00:00

This is intended to be a starting point along the lines of "if I were going to make a WordPress theme in 2025, what would it looks like?"

  • (削除) Rollup (削除ここまで) vite for assets (in build mode)
  • Composer with WP core installed at app
  • /resources for the assets (maybe outside of the theme?)
  • theme/modules for components and blocks
  • Render and View classes to come back baby
  • Twig templating (削除) probably (削除ここまで)
  • Native blocks powered by shadcn/core components maybe (Native block components
  • Styles for editor distinct from styles to front end maybe? (might be more trouble than worth) (two tailwindcss processes maybe?)
  • Prebuilt most used blocks
    • text beside image
    • image
    • FAQ
    • CTA
    • Cards (automatic and manual)
    • Heading
    • paragraph
    • Standfirst/Description
    • Hero
    • Gallery
    • Quote(s)
    • Slideshow
    • Video embed

New block (dynamic)

  1. Copy _example block
  2. Update block.json, edit.jsx and render.twig
  3. Restart vite
  4. Add to layouts ALLOWED_BLOCKS list

New block (client)

  1. Copy _example block
  2. Update block.json, edit.jsx and render.twig
  3. Add save.jsx import into index.js and pass to save:
  4. Restart vite
  5. Add to layouts ALLOWED_BLOCKS list

Core block render

This isn't set up yet but roughly

  1. Copy _example--override to core block name (e.g. paragraph/)
  2. Update block.json
  3. It will render what is in render.twig

If we were to dev server

// /build/hot
// 2. Get dev server port from hot file
// http://[::1]:5173
// 3. return dev server and path
// get_template_directory() =>
// http://localhost:5173/public/content/themes/theme/
// 4. or return local path
// build/app.css