htmlburger/wpemerge-twig

Enables the use of Twig views in WP Emerge.

0.16.0 2020-05-23 12:15 UTC

This package is auto-updated.

Last update: 2020-12-23 13:45:26 UTC


README

Enables the use of Twig views in WP Emerge.

Quickstart

  1. Run composer require htmlburger/wpemerge-twig in your theme directory
  2. 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.