Добавление файла темы для контента без WordPress

У меня есть плагин сторонних событий, который использует пользовательские таблицы в базе данных. Я создал файл темы (event.php), который извлекает данные на основе пули, которые идеально указаны в URL-адресе.

Я хочу создать собственное правило перезаписи URL для этого шаблона, так что URL-адрес выглядит следующим образом:

/ Событие / мой-тихоход

Вызовите файл event.php, захватив определенное событие, которое они запросили (slug).

Класс, который я включаю в функции.php, для этого:

<?php $EventpageCode = new Eventpage(); register_activation_hook( __file__, array($EventpageCode, 'activate') ); add_filter('rewrite_rules_array', array($EventpageCode, 'create_rewrite_rules')); add_filter('query_vars',array($EventpageCode, 'add_query_vars')); add_filter('admin_init', array($EventpageCode, 'flush_rewrite_rules')); add_action('template_include', array($EventpageCode, 'template_redirect_intercept')); class Eventpage { function activate() { global $wp_rewrite; $this->flush_rewrite_rules(); } function create_rewrite_rules($rules) { global $wp_rewrite; $newRule = array('event/(.+)' => 'index.php?pagename=event&eventid='.$wp_rewrite->preg_index(1)); $newRules = $newRule + $rules; return $newRules; } function add_query_vars($qvars) { $qvars[] = 'eventid'; return $qvars; } function flush_rewrite_rules() { global $wp_rewrite; $wp_rewrite->flush_rules(); } function template_redirect_intercept($template) { global $wp_query; if ($wp_query->get('eventid')) { $template = locate_template( array( 'event.php' ) ); } return $template; } function pushoutput($message) { $this->output($message); } function output( $output ) { header( 'Cache-Control: no-cache, must-revalidate' ); header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' ); echo json_encode( $output ); } } ?> 

Это отлично работает для отображения содержимого, за исключением того, что страница выдает ошибку 404 (но все же отображает содержимое). Любые предложения о том, как избежать ошибки 404?

Solutions Collecting From Web of "Добавление файла темы для контента без WordPress"

Просто удалите pagename = event & и сбросьте свои правила перезаписи …

 $newRule = array('event/(.+)' => 'index.php?eventid='.$wp_rewrite->preg_index(1)); 

* template_include * является фильтром НЕ действием!

 add_filter('template_include', array($EventpageCode, 'template_redirect_intercept')); 

Вы можете использовать * wp_title * функцию или фильтр, чтобы изменить заголовок страницы.