1. 首页
  2. Wordpress教学

使用Twig 进行WordPress 开发

前言:Timber 是一个已经行之有年(测试版本在2013 年7 月就发布了)的WordPress 外挂,但是中文的社区讨论Timber 与Twig 的用户并不多,但这是我目前使用过后认为学习曲线比较缓,没有太多复杂的前置知识的工具。我希望可以有一个比较完整的介绍,让大家在制作自己的布景主题时可以有一个不错的选择。

使用Twig 进行WordPress 开发:简介

大家已经谈论了很多关于WordPress的未来发展,很多人都认为WP缺乏模板语言。这也难怪,因为其他CMS平台例如Django、Ruby on Rails、Node.js、Laravel,甚至是Drupal都有模版语言。虽然这颗星球上使用WordPress开发的网站,占据了将近30%,你也很难用有没有模版语言来判断WP的策略好坏。但是,由于代码中的模组性仍然缺失,如果能有一个模组化的方式架设网站,还是比较方便。

但是有个好消息!Twig 模板引擎和一个叫做Timber 的外挂可以帮助我们在WordPress 中编写超级干净和模块化的程式码。在本系列中,我们将讨论它的实现和与WordPress 的整合。首先我将介绍什么是Twig,以及为什么需要它,在接下来的三篇文章中,我将通过Timber 说明与WordPress 结合的不同类型的Twig 模板。

为什么使用Twig?

PHP 的确有很多优秀的模板引擎,但是Twig 确实在以下能力上超过了所有这些引擎:

丰富的功能

Twig 是功能最丰富、也是功能最强大的PHP 模板引擎之一。它支持多重继承和自动输出转译,并帮助将模板划分为几个区块(Blocks)或组件(Compentents),以维护模组化设计。不仅如此,开发人员还可以添加更多的外挂来满足任何前端需求。

快速和高效

与普通的PHP 模板相比,通过Twig 编译的模板需要的时间少了很多。编码例程得到了高度的优化,你可以节省大量的开发时间。当你计划更改基本框架时,这也很有用,因为Twig 帮助创建一个独立的模板层,可以与任何后端框架连接,无论是Laravel 还是WordPress。

对设计师和开发人员友好

Twig 适合设计师和开发人员的需求。即使你不是一个代码爱好者,也可以很容易的使用Twig,并且感觉基于组件编写模块模板是正确的。它的语法很容易理解和避免在模板文件中实现动态PHP 操作。它非常现代化,几乎可以适应所有最新的编码标准。在处理Twig 时,输出逸出的概念非常全面。

让我们从一个简单的例子开始。

在普通的PHP 中,你会得到这样的输出:

  1. <?php echo $foo ; // $foo is any random variable ?>
  2. <?php echo htmlspecialchars ( $foo , ENT_QUOTES , ‘UTF-8’ ) ?>

在Twig 中,我们可以把上面的程式码简化为:

  1. { { foo } }
  2. { { foo|escape } }
  3. { { foo|e } } { # shortcut to escape a variable #}

在Twig 中逸出就是这么简单。只要添加双括号,输入变数的名称,就会得到一个相对的输出。在它旁边加上| e,我们就可以开始转义了。在本系列接下来的三篇文章中,我们将对此进行更多的讨论。

安全

Twig 自己对数据进行清理和保护。它的专用沙箱模式智能地监视整个代码并过滤可能的最佳结果。这意味着用户生成的模板可以轻松、安全地实现。沙箱环境只能在全局或局部上为这样的特定模板启用:

  1. { { include ( ‘post.html’ , sandboxed = true ) } }

在任何语法错误的情况下,Twig 通过生成一条消息来调试你的文件,该消息包含你的文件名和带有问题代码的行号等细节。

灵活

我刚刚提到Twig 是一个现代模板引擎,这也意味着你可以扩展它的功能,因为它非常灵活。它完全支持高效的lexer 和解析器,开发人员可以通过它定义自定义标记、过滤器、函数等。

其他

除了上面提到的所有特性之外,Twig 有很好的文档记录和完整的单元测试。它的API 和模板库是完全稳定的,可以处理所有复杂的任务。也有专门的在线书籍和完整的API 文档。

Twig 是Drupal 8 的新模板语言,这是我使用这个模板引擎的主要动机。XWP 的优秀员工,尤其是韦斯顿·鲁特,正在研究一项建议,让WordPress.com 的VIP 用户可以使用Twig。

Timber:将Twig 和WordPress 结合在一起

到目前为止,整个讨论围绕着两件事展开。首先,我们应该采用模组化的方法,在设计自己的WordPress 布景主题时将模版与数据分开;其次,Twig 可以帮助我们做到这一点。但是如何把这两者结合在一起呢?

为了实现Twig 和WordPress 之间最好的整合,开发者们做出了各自的努力,其中一个大胆的尝试是由一家名为Upstatement 的网站创建的Timber。它使用了Twig 模板引擎,这使得在WordPress 中编写模组化并且干净的程式码成为可能。

Timber 与Twig 可以帮助你建立快速和模块化的WordPress 主题。这样,你就可以将HTML 代码与普通的PHP 文件分开,从而确保更持久的代码模式。保持HTML 和PHP 独立的概念使PHP 文件能够严格地专注于提供数据和逻辑,而HTML 文件(Twig 文件) 则专注于web 应用程序的视图层。

总的来说,Timber 有三个主要任务:

1.它将Twig结合到WordPress中。
2.它将呈现Twig模板。
3.它添加了一个基础WordPress数据集。

我认为他们的使命宣言说明了一切:

对于希望通过直观、一致和完全可访问的界面将HTML 翻译成高质量WordPress 主题的开发人员来说,Timber 是一个工具。

1.直观:API是围绕程序员的期望编写的,以用户为中心。
2.一致:所有的WordPress对象都可以通过像slug、ID和name这样的多态属性访问。
3.访问:没有黑盒子。所有的努力都是由开发人员获得100%的HTML。

Timber 是如何运作的呢?

对于一般的WordPress 主题,PHP 和HTML 代码的所有片段都集成在相同的PHP 模板文件中并进行修改。但是,对于Timber,我们将模板分为两个不同的档案:PHP 文件和视图/模板文件(View),即.twig 文件。

因此,第一个副档名是.php 文件,第二个是.twig。因此,如果你正在为single.php 创建模板文件,你的文件将被命名为single.php 和single.twig。

前者文件对数据进行排序,而后者是使用HTML 中的数据的模板。通过这种方式,你就能以模组化的方式在WordPress 主题中添加Actions。

让我们总结一下:

木材在PHP 和HTML (Twig) 文件中处理WordPress 主题的模板文件。这样可以将逻辑与显示分开。它为你提供了创建、样式和显示主题的新方法。

结论

Twig 有很多值得喜爱的地方。这篇文章只是介绍了使用模板引擎和WordPress 的优点。模块化代码是更好的代码,易于维护。现在是开发人员进行工作流转移的时候了,我相信Twig 可以帮助他们做到这一点。

在接下来的文章中,我将用Twig 展示模板文件的实际实现。我们将通过代码示例研究如何实现用于呈现WP 图像、注释和菜单的Twig。在那之前,如果你发现任何问题,请尽管问。

使用Twig 进行WordPress 开发 为WP2原创文章,链接:https://www.wp2.cn/wordpress_teaching/%e4%bd%bf%e7%94%a8twig-%e8%bf%9b%e8%a1%8cwordpress-%e5%bc%80%e5%8f%91/