is_404() — проверяет, является ли текущая отображаемая страница 404-й ошибкой

Возвращает true в случае отображения страницы с 404-й ошибкой (после получения статуса
HTTP 404: Not Found), в остальных случаях — false.

is_404()

Данная функция не имеет никаких параметров.

Примеры использования

В WordPress для страниц с 404-й ошибкой предусмотрен специальный файл 404.php, он подключается автоматически, если запрошенной пользователем страницы не существует.

Если же его нет в теме, то будет открываться index.php, то есть по сути главная страница (подробнее о порядке подключения файлов в WordPress).

Так вот, если на вашем сайте имеет место второй вариант, тогда можно просто добавить условие в файл index.php:

if( is_404() ){
	echo 'Ошибка 404. Запрошенной вами страницы не существует.';
}

Мне конечно остается только догадываться, что находиться в вашем index.php, тем не менее вот более полный обобщенный вариант предыдущего примера:

get_header();
if( is_404() ){
	echo '<p>Ошибка 404. Запрошенной вами страницы не существует.</p>';
	get_search_form();
} else {
	while( have_posts() ): the_post();
		// ну тут будет например HTML-шаблон вывода поста
	endwhile;
}
get_footer();

В общем, я думаю, суть вы уловили.

Комментарии 2

  • Никита26 июня 2015 в 13:06 #

    Добрый день, Михаил!
    Как добиться такого же эффекта, как у Вас на блоге?
    Когда переходишь, например, по такому линку https://truemisha.ru/йуййуйцу выдаётся страница 404?

    У меня страница 404 появляется только когда переходишь, например, по такому линку http://example.com/?p=йцуйцуй. По всем другим, не корректным, запросам показывается главная.

    В настройках постоянных ссылок стоит "По умолчанию", т. е. http://example.com/?p=123
    Есть страница index.php, там дубль главной страницы.
    Есть файл 404.php, его содержание:

    <?php get_header(); ?>
    <?php
    	if( is_404() ){
    	echo 'Ошибка 404. Запрошенной вами страницы не существует.';
    }
    ?>
    <?php get_footer(); ?>

    В файле .htaccess написаны стандартные вордперссовские правила:

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    # END WordPress
    • Миша27 июня 2015 в 00:06 #

      Добрый день!

      В настройках постоянных ссылок стоит "По умолчанию", т. е. http://example.com/?p=123

      Всё дело в этом — постоянные ссылки не настроены.

      Попробуйте директиву .htaccess ErrorDocument 404.

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Миша: Добрый день! В принципе вам только немного нужно доработать код из этого поста - категории уже есть, цена - это и так...

  • eveniy: Добрый день Михаил, подскажите на примере как добавить свои произвольные поля в в вашу форму фильтрации: Я так понимаю...

  • Миша: Отлично! )

  • Дмитрий: сам разобрался: в настройках кастомного типа записи недавно оптимизировал настройки и переоптимизировал: в аргументе 'ta...

  • Дмитрий: У меня по какой-то причине пропало отображение (как в колонке меню слева, так и метабокс в записях ) раздела рубрик для...