lin3s/template-selector

Adds a field to declare templates used by pages dynamically


Keywords
lin3s, wp-plugin, template-selector
License
MIT

Documentation

Template selector

Adds a field to declare templates used by pages dynamically

Scrutinizer Code Quality Total Downloads      Latest Stable Version Latest Unstable Version

DEPRECATED: included in WPFoundation 1.6.0

This feature is included by default in WPFoundation since version 1.6.0. You just need to extend the abstract class LIN3S\WPFoundation\Configuration\Theme\Theme to get it working.

Why?

LIN3S's WPRouting is a very robust solution to manage the Wordpress routing system in a Symfony way. We came up with this solution in our way to a MVC architecture because many PHP files where scattered in our template root directory with dummy unstructured code.

This way, we are now able to match routes used by Wordpress with the actions from our Controllers, letting us to keep a simpler a more intuitive theme folder structure for new coming developers.

We faced some issues when we started using WP-Routing plugin, creating a php file in theme's root folder had no sense just to add an annotation. Therefore, we came up with this alternative to avoid using annotations to declare new page templates.

With this plugin you can now use a hook to add your custom page templates, and the default template selector items will be replaced with your programatically declared templates.

Installation

The recommended and the most suitable way to install is through Composer. Be sure that the tool is installed in your system and execute the following command:

$ composer require lin3s/template-selector

Remember that Template Selector is a Wordpress plugin so, they can customize the location path easily with Composer (more info):

"extra": {
    "installer-paths": {
        "src/plugins/{$name}/": ["type:wordpress-plugin"],
        "src/themes/{$name}/": ["type:wordpress-theme"],
        "src/mu-plugins/{$name}/": ["type:wordpress-muplugin"]
    }
}

Usage

To declare the templates just add the following hook to your WordPress theme.

add_filter('template_selector_available', [$this, 'templates']);

public function templates($templates) {
    return array_merge($templates, [
        'template-slug'    => 'Template name shown in admin',
        'another-template' => 'Another template'
    ]);
}

Licensing Options

License