Что делает is_404()
Это условный тег WordPress, который проверяет, отображается ли в данный момент страница с ошибкой 404 — «страница не найдена». Если да — функция возвращает true, если нет — false.
Функция доступна начиная с версии WordPress 1.5.0 и до сих пор активно используется в шаблонах.
Синтаксис
if ( is_404() ) {
// код, который выполнится на странице 404
}
Возвращаемое значение — булево: true или false.
Где используется
Чаще всего эту функцию вставляют в файл шаблона single.php или header.php, если в теме не предусмотрен отдельный файл 404.php. Например, можно показать форму поиска на странице ошибки, чтобы пользователь нашёл то, что искал:
if ( is_404() ) {
get_search_form();
}
Как получить URL, который вызвал ошибку
Иногда нужно показать пользователю именно тот адрес, который не был найден. Для этого используйте суперглобальный массив $_SERVER:
if ( is_404() ) {
echo 'Страница ' . esc_html( home_url( $_SERVER['REQUEST_URI'] ) ) . ' не найдена';
}
Обратите внимание на обязательную санитизацию через esc_html() — это защитит от XSS-атак.
Внутренняя работа
Под капотом is_404() обращается к глобальному объекту $wp_query и вызывает его метод is_404(). Если запрос ещё не выполнен, функция вернёт false и покажет предупреждение в режиме отладки.
function is_404() {
global $wp_query;
if ( ! isset( $wp_query ) ) {
_doing_it_wrong( __FUNCTION__, '...' );
return false;
}
return $wp_query->is_404();
}
Совет
Если в вашей теме уже есть файл 404.php, WordPress автоматически использует его для отображения ошибок. Функция is_404() при этом по-прежнему доступна внутри этого файла для дополнительной логики — например, чтобы скрыть или показать определённые элементы интерфейса.