Пустая страница с ошибкой 404 при использовании шаблона Twig и Timber (WordPress)

Я использую 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 %}

person Liz    schedule 20.03.2018    source источник
comment
Проверьте, где находится ваш 404.php. Если его нет в корневой папке вашей темы, это может не сработать. Также ознакомьтесь с ответом @robertguss. У него есть хорошее руководство по маршрутизации.   -  person Gchtr    schedule 31.03.2018


Ответы (1)


Вам не нужно настраивать какую-либо настраиваемую маршрутизацию, чтобы WordPress мог выбрать страницу 404. Вот Кодекс WP на страницах 404.

Кроме того, если вы используете стартовую тему 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 до последней версии и использовать их стартовую тему, чтобы начать работу. Они предоставляют множество шаблонов, которые работают «из коробки» и значительно упрощают работу. Тем не менее, вы должны быть осторожны при обновлении, если вы довольно далеко продвинулись в своем проекте, потому что я уверен, что будут критические изменения, такие как, например, функция маршрутов. На указанной выше странице представлена ​​полезная информация о том, следует ли вам обновляться и как это сделать.

Надеюсь, это поможет.

person robertguss    schedule 21.03.2018