Есть ли какие-либо крючки, которые изменяют логику 404?


При условии, что в вашей теме определена страница 404, Wordpress отобразит страницу 404, если "тег" определен в $wp_query->query_vars, и нет сообщений, соответствующих этому тегу.

Я пишу плагин, который отображает некоторую информацию на каждой странице в дополнение к сообщениям. Я хотел бы изменить логику 404, чтобы страница 404 отображалась, если нет сообщений, соответствующих тегу и, плагин не может получить данные, соответствующие этому тегу. Если плагин может найти данные, я хотел бы показать обычную страницу, независимо от того, есть ли сообщения на этой странице или нет...

Я гуглил, читал код, читал кодекс и копался здесь, и не смог понять, где Wordpress запускает этот 404 и как я могу его переопределить. (У меня такое чувство, что это может иметь какое-то отношение к status_header() в functions.php, но неясно, как и когда мне нужно подключиться к нему).

Любая помощь/идеи/просвещение оцененный.

Спасибо,

~ Исправление

Author: Patch, 2010-09-15

3 answers

Еще немного повозившись с кодом и погуглив, я нашел ответ. Это содержится в этой теме (см. Сообщение Otto42), но для записи добавление следующего в ваш плагин переопределит обработку 404 для указанных вами условий:

add_filter('template_redirect', 'my_404_override' );
function my_404_override() {
    global $wp_query;

    if (<some condition is met>) {
        status_header( 200 );
        $wp_query->is_404=false;
    }
}

Обратите внимание, что вам нужно установить "is_404" в значение false, прежде чем PHP выведет заголовки, поэтому хорошей идеей будет подключить его в логике template_redirect.

~ Исправление

 30
Author: Patch, 2010-09-16 00:13:24

Мне нужно было сделать то же самое для пользовательского проекта, в котором всегда было 200 страниц, и я обнаружил, что вы также можете просто добавить это в начало файла шаблона (выше get_header();)

global $wp_query;
status_header( 200 );
$wp_query->is_404=false;
 5
Author: noinput, 2011-05-02 01:25:53

Создайте файл шаблона 404.php в своей теме и настройте его по мере необходимости (добавив вывод вашего плагина или что-то еще). Вы упоминаете , определенный в вашей теме, что именно не так с этим подходом для вас?

Кодекс Создание страницы с ошибкой 404

 1
Author: Rarst, 2010-09-15 19:37:11