##Requirements
You must be using Timber for WordPress.
##Installation
run npm install --save wp-timber-cli inside your root WordPress theme directory.
##Usage
Timber CLI will create a WordPress PHP template and corresponding twig template and automatically create some default Timber stuff.
###Create Templates
From the command line, run wp-timber -c <type> <name> where type is the type of template (page, single, archive) and name is, you guessed it, the name of the template.
Example Output
wp-timber -c page about-us
Creates page-about-us.php in your theme's root directory, and /views/pages/page-about-us.twig. If you don't have a views directory it will be created for you.
Inside the created .php file is a very basic Timber template that renders the corresponding twig template that was also created.
page-about-us.php
<?php
$context = Timber::get_context();
$post = new TimberPost();
$context["post"] = $post;
Timber::render("/views/pages/page-test.twig", $context);
?>###Create Query
You can create a basic WordPress query for an existing page template, or when create a new template using this CLI.
Existing Template
wp-timber -q page-about.php custom-post-type
When Create a New Template
wp-timber -c page about -q custom-post-type
Output
<?php
$custom_post_types_args = array(
"post_type" => "custom-post-type"
);
$context = Timber::get_context();
$post = new TimberPost();
$context["post"] = $post;
$context["custom_post_types"] = Timber::get_posts($custom_post_types_args);
Timber::render("/views/pages/page-about.twig", $context);
?>###Remove Templates
wp-timber -r page about-us
This will find a .php template called page-about-us.php in the root theme directory and delete it, as well as the corresponding twig template in /views/pages/.
###Build from a Config file
With Timber CLI you can generate a series of templates with queries from a configuration file. Create a .timber file that contains JSON to generate as many templates with queries as you want.
Here's an example config file:
{
"page": {
"blog": {
"queries":{
"news": {
"post_per_page": 10,
"orderby": "title"
},
"custom-posts": {
"post_per_page": 20,
"orderby": "date"
}
}
},
"about-us": {}
},
"archive": {
"events": {},
},
"single": {
"event": {}
}
}Running wp-timber build will generate the following PHP/twig templates:
page-blog.phpwith two queries: one for 'news' post type and one for 'custom-posts' andviews/pages/page-blog.twigfilepage-about-us.phpandviews/pages/page-about-us.twigarchive-events.phpandviews/archives/archive-events.twigsingle-event.phpandviews/singles/single-event.twig