twigwp/twig-wordpress

作为服务的 WordPress 的 Twig

1.4.1 2018-12-15 13:13 UTC

This package is auto-updated.

Last update: 2024-09-16 03:59:44 UTC


README

Build Status codecov Scrutinizer Code Quality

WordPress 的 Twig

WordPress 的 Twig 允许您使用著名的 Twig 模板引擎 https://twig.symfony.ac.cn/,并将其扩展以使用 WordPress 提供的功能,如 esc_htmlesc_html__wp_kses 等...

此包将转义函数注册为过滤器和函数,因为翻译函数需要传递一个文本域。

模块

该包通过定义 modules 将过滤器、函数和其他内容提供给 twig。

模块是实现接口 TwigWp\Module\Injectable 的类实例,由提供者 TwigWp\Module\Provider 使用,允许我们检索要设置到 twig 实例中的所有模块。

Provider::modules 方法中有一个名为 twigwp.modules 的过滤器,允许第三方软件钩入模块列表,因此它们能够添加其他过滤器、函数、标签或它们想要的任何其他内容来扩展 twig 实例(有关如何扩展 twig 的说明,请参阅 https://twig.symfony.ac.cn/doc/2.x/advanced.html)。

转义器

WordPress 的 Twig 将以下内容定义为过滤器和函数

  • esc_js
  • esc_sql
  • esc_textarea
  • esc_url
  • esc_url_raw
  • esc_attr
  • esc_html

Kses

kes 只定义为函数。

  • wp_kses
  • wp_kses_post
  • wp_kses_allowed_html

消毒剂

消毒剂仅定义为函数。

  • sanitize_html_class
  • sanitize_text_field
  • sanitize_title
  • sanitize_key

L10n

本地化函数,包括转义函数。以 esc_(转义)开头的本地化函数也注册为过滤器。

  • __
  • _e
  • _n
  • _x
  • _ex
  • _nx
  • esc_attr__
  • esc_attr_e
  • esc_attr_x
  • esc_html__
  • esc_html_e
  • esc_html_x

模板函数

此模块包括所有那些即使不是 WordPress 模板函数也会输出 HTML 标记的函数。

这是因为大多数 WordPress 函数通常通过数组获取一些配置并输出 HTML 标记。由于您希望在视图中拥有您的标记,因此将整个标记放入对象属性中是没有用的,这些函数可以帮助您传递配置并直接调用输出函数,从而避免解析可能产生未转义的 HTML 标记。

  • wp_nav_menu
  • get_adjacent_post_link

提供者

模块通过提供者检索。

在提供者中,可以通过 twigwp.modules 过滤模块。

因此,如果您想添加一个新的模块,可以钩入此过滤器并返回一个 TwigWp\Module\Injectable 的新实例。

模块用于扩展 twig 实例,injectInto 方法接收一个 \Twig\Environment 实例,例如添加新函数、新过滤器或新标签等...

例如

class MyModule implements TwigWp\Module\Injectable {

	public function injectInto(\Twig\Environment $twig): \Twig\Environment {
		// Do your stuffs here.

		return $twig;
	}

}

$provider = new Provider(new \Twig\Environmnet());

add_filter('twigwp.modules', function($modules)
{
	$modules['module_name'] = new MyModule();

	return $modules;
});

$modules = $provider->modules();

这只是一个示例,因为您永远不会需要创建 Module Provider 的实例。所有内容都由 Factory 类处理。

您只需添加您的过滤器,一切就绪。

工厂

该软件包提供了一个Factory类,帮助你创建一个新的\Twig\Environment类实例。

如果你想创建一个新的Twig实例,你可以简单地通过传递一个\Twig\Loader\LoaderInterface对象以及如果你想要自定义环境时的twig选项来创建一个工厂实例。

然后调用create方法,就完成了。

$twigFactory = new \TwigWp\Factory(
	new \Twig\Loader\FilesystemLoader(),
	[
        'debug' => false,
        'charset' => 'UTF-8',
        'base_template_class' => 'Twig_Template',
        'strict_variables' => false,
        'autoescape' => 'html',
        'cache' => false,
        'auto_reload' => null,
        'optimizations' => -1,
	]
);

$twig = $twigFactory->create();

很简单,对吧?

许可证

本程序是免费软件,使用GPL2许可证。

有关许可证的更多信息,请参阅https://gnu.ac.cn/licenses/old-licenses/gpl-2.0.en.html

需求

PHP >= 7.0

错误报告

要报告错误,请参阅https://github.com/widoz/twig-wordpress/issues

支持

如需支持,请在新问题中添加标签help wanted并打开https://github.com/widoz/twig-wordpress/issues