/** * Filter the variable by passing it through the registered view engine helpers * * Inspired by Twig filters and works with helpers or PHP functions which accept * single argument. * * Usage: * * ``` * <?= $this->filter( $var, 'strtolower | ucwords | esc_html' ) ?> * ``` * * @param mixed $var * @param string $filters * * @return mixed */ public function filter($var, $filters) { $filters = explode('|', $filters); foreach ($filters as $filter) { $filter = $this->view_engine->get_helper(trim($filter)); $var = $filter($var); } return $var; }
use Hromada\Authoring\Foundation\View_Engine; require_once __DIR__ . '/src/foundation/class-loader.php'; /** * Don't creep the global scope */ call_user_func(function () { /** * Initialise core classes */ $plugins_dir = dirname(plugin_dir_path(__FILE__)); $loader = new Loader(); $loader->add_wp_mapping('Hromada\\:plugin\\:package', $plugins_dir . '/:plugin/src/:package')->add_wp_mapping('Hromada\\:plugin', $plugins_dir . '/src/:plugin')->register(); $container = new Container(); $container->set('loader', $loader); $container->set_service('view.engine', function () { $view_engine = new View_Engine(); $view_engine->add_directory(__DIR__ . '/views'); return $view_engine; }); $container->set_factory('view', function (Container $container) { return $container->get('view.engine')->get_view(); }); Container::set_instance($container); /** * Setup authoring pack */ add_filter('init', 'Hromada\\Authoring\\setup_post_types', 10); add_filter('init', 'Hromada\\Authoring\\setup_taxonomy', 11); add_filter('admin_init', 'Hromada\\Authoring\\setup_meta_boxes'); add_action('admin_menu', function () { remove_menu_page('edit-comments.php');