unprefix / unprefix-twig-wordpress
Requires
- php: >=7.0
- twig/twig: ^2.0
Requires (Dev)
- brain/monkey: dev-master
- inpsyde/php-coding-standards: ^0.13.3
- phpunit/phpunit: ^6.5
This package is auto-updated.
Last update: 2022-02-01 13:12:30 UTC
README
WordPress的Twig
WordPress的Twig允许您使用著名的Twig模板引擎https://twig.symfony.ac.cn/,并通过扩展使其能够使用WordPress提供的功能,如esc_html
、esc_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
。