Sage
Sage is a WordPress starter theme with a modern development workflow.
Features
- Sass for stylesheets
- ES6 for JavaScript
- Webpack for compiling assets, optimizing images, and concatenating and minifying files
- BrowserSync for synchronized browser testing
- Bootstrap 4 for a front-end framework (can be removed or replaced)
- Template inheritance with the theme wrapper
See a working example at roots-example-project.com.
Requirements
Make sure all dependencies have been installed before moving on:
Theme installation
Install Sage using Composer from your WordPress themes directory (replace your-theme-name below with the name of your theme):
# @ example.com/site/web/app/themes/
$ composer create-project roots/sage your-theme-name dev-master
Theme structure
themes/theme-name/ # → Root of your Sage based theme
├── assets # → Front-end assets
│ ├── config.json # → Settings for compiled assets
│ ├── fonts/ # → Theme fonts
│ ├── images/ # → Theme images
│ ├── scripts/ # → Theme JS
│ └── styles/ # → Theme stylesheets
├── composer.json # → Autoloading for `src/` files
├── composer.lock # → Composer lock file (never manually edit)
├── dist/ # → Built theme assets (never manually edit)
├── functions.php # → Never manually edit
├── index.php # → Never manually edit
├── node_modules/ # → Node.js packages (never manually edit)
├── package.json # → Node.js dependencies and scripts
├── screenshot.png # → Theme screenshot for WP admin
├── src/ # → Theme PHP
├── style.css # → Theme meta information
├── templates/ # → Theme templates
│ ├── layouts/ # → Base templates
│ └── partials/ # → Partial templates
├── vendor/ # → Composer packages (never manually edit)
├── watch.js # → Webpack/BrowserSync watch config
└── webpack.config.js # → Webpack config
Theme setup
Edit src/lib/setup.php to enable or disable theme features, setup navigation menus, post thumbnail sizes, post formats, and sidebars.
Theme development
Sage uses Webpack as a build tool and npm to manage front-end packages.
Install dependencies
From the command line on your host machine (not on your Vagrant development box), navigate to the theme directory then run npm install:
# @ example.com/site/web/app/themes/your-theme-name
$ npm install
You now have all the necessary dependencies to run the build process.
Available build commands
npm run build— Compile and optimize the files in your assets directorynpm run start— Compile assets when file changes are made, start BrowserSync sessionnpm run build:production— Compile assets for production
Using BrowserSync
To use BrowserSync during npm watch you need to update devUrl at the bottom of assets/config.json to reflect your local development hostname.
For example, if your local development URL is https://project-name.dev you would update the file to read:
...
"devUrl": "https://project-name.dev",
...
If you are not using Bedrock, you should also update publicPath to reflect your folder structure:
...
"output": {
"path": "dist",
"publicPath": "/wp-content/themes/sage/dist/"
}
...
Documentation
Sage 8 documentation is available at https://roots.io/sage/docs/.
Sage 9 documention is currently in progress and can be viewed at https://github.com/roots/docs/tree/sage-9/sage.
Contributing
Contributions are welcome from everyone. We have contributing guidelines to help you get started.
Community
Keep track of development and community news.
- Participate on the Roots Discourse
- Follow @rootswp on Twitter
- Read and subscribe to the Roots Blog
- Subscribe to the Roots Newsletter
- Listen to the Roots Radio podcast