使用 Timber 为通用页面模板渲染自定义树枝文件

问题描述

我正在尝试使用 Timber/Twig 在 wordpress 中创建自定义页面模板。

我使用了以下代码,但不明白为什么它不起作用。 Timber 文档未提供具体示例。

我有一个名为 template-form-template.PHP文件,用于多个表单页面。 我更喜欢在 admin 中选择模板,而不是为每个页面 slug 创建一个 page-...twig。

<?PHP
/**
 * Template Name: Form Template
 * Description: Use this template for custom forms.
 */

$context = Timber::context();
$context['post'] = new Timber\Post();
Timber::render( 'page-form.twig',$context );

?>

模板名称wordpress 管理员中按预期显示。 但是,没有调用 page-form.twig。 我正在测试的页面中有一个代码,它显示为原始短代码,这意味着正在显示页面内容但没有树枝格式。

page-form.twig 内容是:

{% extends "base.twig" %}

{% block content %}
    <div class="content-wrapper">
        <article class="post-type-{{post.post_type}}" id="post-{{post.ID}}">
            <section class="article-content">
                <h1 class="article-h1">page.twig{{post.title}}Foooo</h1>
                <div class="article-body">
                    {{post.content}}
                </div>
            </section>
        </article>
    </div>
    <!-- /content-wrapper -->
{% endblock %}

解决方法

你是否在你的functions.php中初始化了Timber?

$timber = new Timber\Timber();

或者设置视图目录来查找 .twig 文件?

Timber::$dirname = array( 'templates','views' );