我正在为一个WordPress项目使用Timber。我正在尝试让我的自定义404错误页面小枝模板在404错误上显示。目前,我的404错误显示为空白屏幕。但是,当我转到route:/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 %}发布于 2018-03-21 20:10:10
您不应该为了让WordPress选择404页面而设置任何自定义路由。这是WP Codex on 404 Pages
另外,如果您使用的是木材入门主题,这是默认情况下的工作。以下是主题附带的文件,我刚刚在一个木材项目上进行了测试,我目前正在工作,我还没有做任何事情来设置自定义的404页面。我只有一些默认的Timber starter主题:
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
我不确定你在你的项目中走了多远,但你可能想尝试升级到最新版本的木材,并使用他们的入门主题来开始。它们提供了许多开箱即用的模板,使事情变得简单得多。然而,如果你的项目进行得很远,你应该小心升级,因为我相信会有一些破坏性的变化,比如路由功能。上面引用的页面提供了一些关于是否应该升级以及如何升级的很好的信息。
希望这能有所帮助。
https://stackoverflow.com/questions/49392382
复制相似问题