Я использую Древесина для проекта 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 %}






Вам не нужно настраивать какую-либо настраиваемую маршрутизацию, чтобы WordPress мог выбрать страницу 404. Вот WP Codex на 404 страницах
Кроме того, если вы используете стартовую тему Timber, она работает по умолчанию. Вот файлы, которые поставляются с темой. Я только что протестировал это на проекте Timber, над которым я сейчас работаю, и я ничего не сделал для настройки пользовательской страницы 404. У меня просто есть то, что по умолчанию входит в стартовую тему Timber:
<?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 );
{% 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 до последней версии и использовать их стартовую тему, чтобы начать работу. Они предоставляют множество шаблонов, которые работают «из коробки» и значительно упрощают работу. Тем не менее, вы должны быть осторожны при обновлении, если вы довольно далеко продвинулись в своем проекте, потому что я уверен, что будут критические изменения, такие как, например, функция маршрутов. На указанной выше странице представлена полезная информация о том, следует ли вам обновляться и как это сделать.
Надеюсь, это поможет.
Проверьте, где находится ваш 404.php. Если его нет в корневой папке вашей темы, это может не сработать. Также ознакомьтесь с ответом @ robertguss. У него есть хорошее руководство по маршрутизации.