unprefix/unprefix-twig-wordpress

此包已被弃用且不再维护。作者建议使用twigwp/twig-wordpress包。

WordPress的Twig作为服务

1.4.1 2018-12-15 13:13 UTC

This package is auto-updated.

Last update: 2022-02-01 13:12:30 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

Kses仅定义为函数。

  • 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的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 提供者的实例。一切由 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

支持

要获得支持,请打开一个新问题 https://github.com/widoz/twig-wordpress/issues 并应用标签 help wanted