WordPress: не показывать 404, когда сообщений нет

В настоящее время в WordPress есть ошибка, если у вас есть страница сообщений, установленная в:

Настройки->Чтение->Статическая страница->Страница сообщений

Если есть сообщения, то страница (например, с ярлыком под названием news) отображает сообщение и использует index.php из темы.

Но с этой конфигурацией, если постов нет, то вызывается страница темы 404. Это определенно ошибка, и она была отправлена ​​(Заявка №10822). Следует позволить index.php показывать все, что он хочет, на !have_posts(), но сейчас страница, кажется, вообще не вызывается.

Мой вопрос: есть ли обходной путь для этой ошибки без изменения основных файлов wp? Я был бы открыт для плагина, изменения темы, пользовательского шаблона страницы, изменения htaccess и т. д.


person philfreo    schedule 06.01.2010    source источник
comment
Конечно, это должно быть на Superuser?   -  person Samir Talwar    schedule 06.01.2010
comment
Нет... Я не прошу помощи с простой настройкой WordPress. Очевидно, здесь проблема с кодированием, и у меня нет проблем с написанием собственного PHP в темах или плагинах, если он не переопределяет файлы ядра.   -  person philfreo    schedule 09.01.2010


Ответы (2)


Я только что провел тест для него. На самом деле он не обслуживает 404, он использует index.php, но, поскольку сообщения не найдены, он выходит за пределы функции have_posts(). Вы уверены, что это не плагин или тема, вызывающая вашу проблему? Я протестировал это с темой по умолчанию при базовой установке WordPress.

person Matt Walters    schedule 06.01.2010

Большинство файлов тем содержат в своем цикле WP уловку для отсутствия сообщений, то есть:

<?php else : ?>
Sorry, but you are looking for something that isn't here.
<?php endif; ?>

Это может быть то, что вы видите. Вы можете использовать пользовательский шаблон страницы без этого текста (оставьте цикл) для своей страницы сообщений. И попробуйте Показать шаблон | coffee2code.com, чтобы узнать, какой файл шаблона вы просматриваете.

person markratledge    schedule 06.01.2010
comment
Нет, я подтвердил, что текст, который отображается, является текстом моего 404.php, а не текстом, который отображается в блоке else после if (have_posts()). - person philfreo; 09.01.2010