tmf / wp-simple-templating
A service that lets wordpress themes be more flexible with the template locations
Requires
- php: >=5.4.0
- tmf/wp-hookable-service: ~0.1
This package is not auto-updated.
Last update: 2024-12-17 05:27:44 UTC
README
This Pimple service allows the developer to place the query templates and page templates of a WordPress theme at a custom location. This allows a cleaner, more organized theme structure.
Usage
This service is installable via Composer and relies on it's class autoloading mechanism. You can package the vendor directory with you theme or plugin, with your WordPress installation or with a setup of your choosing.
-
Create a composer project for your plugin or theme:
cd your-theme-directory # install composer phar curl -sS https://getcomposer.org/installer | php # create a basic composer.json ./composer.phar init
-
Add the simple templating service as a dependency in your composer.json
./composer.phar require tmf/wp-simple-templating ~0.1
-
Create a pimple container and register the simple templating service
// load the vendors via composer autoload if (file_exists( __DIR__ . '/vendor/autoload.php')) { require_once __DIR__ . '/vendor/autoload.php'; } use Tmf\Wordpress\Service\SimpleTemplatingServiceProvider; // create the service container $services = new Pimple\Container(); // register the templating service (for templates in the ./templates directory) $services->register( new SimpleTemplatingServiceProvider('templating'), array('templating.directory' => 'templates') // set up the "templates" directory as the "templating.directoy" configuration parameterin the service container );
-
Place all your query templates (
index.php
,single.php
,single-cpt.php
, ...) in thetemplates
directory. You can place additional template parts in this directory structe and call them withget_template_parts('templates/partial/header.php')
-
index.php
still needs to be exist at the root level of the theme, but you can leave it empty (or throw an exception).
Unfortunately get_header() and get_footer() won't work, WordPress will try to load the BackCompat mode...