#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(), чтобы узнать, хотите ли вы распечатать заголовок или нет.