Intereting Posts
Можно ли условно отображать и скрывать элементы настройки для каждого предварительного просмотра устройства? Отображение списка загруженных изображений, отфильтрованных пользователем под определенной группой пользователей Извлечение изображений галереи в WordPress 3.5 на index.php Использование page-something.php в качестве статической главной страницы такое же расширение меню в меню wordpress Как динамически загружать контент в тело модального окна Bootstrap? API-интерфейс WordPress REST – разрешения на возврат Добавить пользовательское поле во все сообщения определенной категории Как создать нумерованный список с помощью PHP? Перенос рабочего локального сайта PHP в wordpress – с помощью базы данных (MySQL) Команда WP-CLI для обновления всех плагинов и ядра сбой при выполнении из cron Показывать ошибку при выборе изображения в загрузчике медиафайлов WordPress, если несоответствие параметров Объединение обновленного сайта-разработчика с живым сайтом при правильном выполнении заказов Связывание «автора» с пользовательской таксономией Результат веб-сайта

WordPress считает, что мой собственный маршрут – 404

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

Например, он говорит 404 в названии документа и класс error404 добавляется в <body>

Пользовательский url – domain.com/path/:id где :id – динамическое значение, соответствующее идентификатору сообщения, поэтому URL-адрес может быть domain.com/path/275. В приведенном ниже примере some_id используется как переменная post id.

Вот приведенная версия моего плагина:

 <?php class MyPlugin { public function __construct() { add_action( 'init', array($this, 'add_response_endpoint') ); add_filter( 'template_include', array($this, 'add_response_template') ); } public function add_response_endpoint() { add_rewrite_rule( '^path/([0-9]+)/?', 'index.php?pagename=my_custom_url&some_id=$matches[1]', 'top' ); add_rewrite_tag('%some_id%', '([^&]+)'); } public function add_response_template($template) { if ( get_query_var( 'pagename' ) === 'my_custom_url' ) { $template = trailingslashit( dirname( __FILE__ ) ) . 'templates/custom-page-template.php'; } return $template; } } new MyPlugin(); 

Я что-то упустил? Или я должен искать эту ошибку в другом месте?

Solutions Collecting From Web of "WordPress считает, что мой собственный маршрут – 404"

Ручная установка is_404 = false; исправлена ​​моя проблема. Однако я не уверен, что это лучший способ сделать это. pre_get_posts этого я попытался использовать фильтр pre_get_posts .

В любом случае, для кого-либо еще в одной лодке вы можете сделать это, чтобы избавиться от состояния 404:

 public function add_response_template($template) { global $wp_query; if ( 'my_custom_url' === get_query_var( 'pagename' ) ) { $wp_query->is_404 = false; $template = trailingslashit( dirname( __FILE__ ) ) . 'templates/custom-page-template.php'; } return $template; } 

И чтобы обновить заголовок документа (материал внутри <title> в разделе <head> ), здесь приведен фрагмент, который также отлично подходит для этой работы.

 add_filter( 'document_title_parts', function($title_arr) { if ( 'my_custom_url' === get_query_var('pagename') ) { $title_arr['title'] = "Document title for my custom route"; } return $title_arr; }, 10, 1 ); 

Если кто-нибудь знает лучший способ, пожалуйста, дайте мне знать.