使用Twig模板和Timber(WordPress)

时间:2018-03-20 19:09:19

标签: php wordpress twig timber

我正在使用Timber进行WordPress项目。我试图让我的自定义404错误页面树枝模板显示404错误。目前,我的404错误显示为空白屏幕。但是,当我去路线时:/404我的模板会显示。我假设我的路由方式有问题,或者我错过了404.php中的一些关键逻辑。

如何为我的404错误显示我的树枝模板?

functions.php中的路线代码:

Routes::map('/404', function($params){
Routes::load('routes/404.php', null, $params, 404);
});

404.php

<?php
$context = Timber::get_context();
$post = new TimberPost();
$context['page'] = $post;

global $wp;
$url = home_url($wp->request);
$context['url'] = preg_replace('#^https?://#', '', rtrim($url, '/'));

$context['global'] = get_fields('options');

Timber::render('views/pages/404.twig', $context);

404.twig

{% extends "layouts/layout.twig" %}

{% block content %}
<div class="row row-is-centered">
<div class="col ns-col-is-8 lead-6 txt-center">
<h1 class="txt-size-5">Our apologies, we couldn't find {{url}}</h1>
</div>
</div>
{% endblock %}

1 个答案:

答案 0 :(得分:0)

您不必设置任何自定义路由,以便WordPress获取404页面。这是WP Codex on 404 Pages

此外,如果您使用的是Timber入门主题,则默认情况下这是开箱即用的。以下是主题附带的文件,我刚刚在我目前正在进行的Timber项目上测试了这个,我还没有做任何事情来设置自定义404页面。我只是默认了Timber入门主题:

404.php

<?php
/**
 * The template for displaying 404 pages (Not Found)
 *
 * Methods for TimberHelper can be found in the /functions sub-directory
 *
 * @package  WordPress
 * @subpackage  Timber
 * @since    Timber 0.1
 */

$context = Timber::get_context();
Timber::render( '404.twig', $context );

404.twig

{% extends "base.twig" %}

{% block content %}
    Sorry, we couldn't find what you're looking for.
{% endblock %}

现在看来路线已被弃用:https://timber.github.io/docs/upgrade-guides/1.0/#routes

我不确定你的项目有多远,但你可能想尝试升级到最新版本的Timber并使用他们的入门主题来开始。它们提供了许多开箱即用的模板,使事情变得更加容易。但是,如果你在项目中走得很远,你应该小心升级,因为我确信会有像路由功能这样的重大变化。上面引用的页面提供了一些关于是否应该升级以及如何升级的好信息。

希望有所帮助。