twigwp / twig-wordpress
作为服务的 WordPress 的 Twig
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: 2024-09-16 03:59:44 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
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。