htmlburger / wpemerge-twig
Enables the use of Twig views in WP Emerge.
0.16.0
2020-05-23 12:15 UTC
Requires
- php: ^7.0
- htmlburger/wpemerge: ~0.16.0
- twig/twig: ^2.4
README
Enables the use of Twig views in WP Emerge.
Quickstart
- Run
composer require htmlburger/wpemerge-twig
in your theme directory - Add
\WPEmergeTwig\View\ServiceProvider
to your array of providers when booting WPEmerge:\App::make()->bootstrap( [ 'providers' => [ \WPEmergeTwig\View\ServiceProvider::class, ], ] );
Options
Default options:
[ // Automatically replace the default view engine for WP Emerge. 'replace_default_engine' => true, // Pass .php views to the default view engine. // replace_default_engine must be true for this to take effect. 'proxy_php_views' => true, // One or more directories to search for views. // Defaults to the main ['views'] key of the configuration. 'views' => [get_stylesheet_directory(), get_template_directory()], // Options passed directly to Twig. 'options' => [ // 'cache' defaults to the main ['cache']['path'] key of the configuration. 'cache' => 'wp-content/uploads/wpemerge/cache/twig', ], ]
You can change these options by specifying a twig
key in your WP Emerge config array:
\App::make()->bootstrap( [ // ... other WP Emerge options 'twig' => [ // ... other WP Emerge Twig options 'options' => [ // ... other Twig options 'cache' => false, ], ], ] );
More information on what Twig options are supported is available on https://twig.symfony.com/doc/2.x/api.html.
Extending Twig
You can use the following to extend twig with a custom filter, for example:
$myfilter = new Twig_Filter( 'myfilter', function( $string ) { return strtoupper( $string ); } ); // \App::resolve() used for brevity's sake - use a Service Provider instead. $twig = \App::resolve( WPEMERGETWIG_VIEW_TWIG_VIEW_ENGINE_KEY ); $twig->environment()->addFilter( $myfilter );
With this, you now have your very own custom Twig filter:
{{ 'hello world!' | myfilter }}
More information on how you can extend Twig is available on https://twig.symfony.com/doc/2.x/advanced.html#creating-extensions.