Плагин WordPress для обработки страницы, не содержащей 404

#php #wordpress #plugins

#php #wordpress #Плагины

Вопрос:

Я делаю плагин WordPress, который обрабатывает все страницы 404, которые не найдены, через другую систему.

Сейчас у меня несколько проблем :

  • Чтобы отобразить содержимое другой системы внутри WordPress, я использую фильтр «template_include», что не кажется разумным.
  • Я не могу изменить код состояния страницы с 404 на 200, когда внешняя система находит содержимое для этого запроса.

Любая помощь будет высоко оценена, в основном со стороны изменения вывода кода состояния WordPress.

Ответ №1:

Это поможет вам изменить код состояния HTTP страницы с 404 на 200:

 <?php

function other_system_status_code() {
    if (is_404()) {
        status_header('200');
    }
}

add_action('template_redirect', 'other_system_status_code');
  

И тогда вы можете отобразить содержимое другой системы внутри WordPress в 404.php шаблон.

В дополнение к коду состояния вы можете захотеть изменить заголовок страницы. Он напечатает «Страница не найдена», даже если вы измените код состояния. Но небольшой простой фильтр может вам помочь:

 <?php

function other_system_page_title() {
    return 'Custom Page Title';
}

add_filter('wp_title', 'other_system_page_title', 100);
  

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

1. есть ли способ просто удалить заголовок, который представляет WordPress? без переопределения?

2. В зависимости от того, что вы пытаетесь выполнить, вы можете либо закомментировать вызов wp_title() в header.php , или используйте функцию is_404(), чтобы узнать, хотите ли вы распечатать заголовок или нет.