Intereting Posts
Представление на лицевой стороне Есть ли способ получить часть вызывающего шаблона? Отправка JSON при публикации нового сообщения Можно ли утверждать, что «статья уже появляется на странице»? Обрезать элементы подменю wordpress в divs Как сделать навигационное меню wordpress использовать почтовые метаданные Запросить (встроенные) категории и расширенные пользовательские поля? Перемещение wp с сервера на другой, с другим администратором Как я могу заставить команду eval-file WP-CLI сообщать о ошибках в stderr? Пользовательский запрос WP_Query показывает только 10 сообщений на всех страницах Как экспортировать данные в формате csv с помощью iframe Сайт поврежден после использования URL-адреса в Admin пользовательские заголовки для статической страницы домашней страницы и сообщений Защита учетных записей администратора – открытие имени пользователя Динамически изменять страницу, загружающую

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 ); 

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