Что делает 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() при этом по-прежнему доступна внутри этого файла для дополнительной логики — например, чтобы скрыть или показать определённые элементы интерфейса.

Разработка сайтов на Wordpress