Intereting Posts
список сообщений из двух категорий на странице – плагин не работает Фильтр post_type thumbnail в результатах поиска Загрузка мультимедиа – выберите только один файл Как перенаправить большое количество URL-адресов? Пользовательская переименование заголовка страницы Как определить, зарегистрирован ли администратор вне цикла Вопрос о том, как работает глобальный $ wp_admin_bar Возвращаемый пользователь Мета текст в качестве ссылок на редактирование сообщений внутри столбцов пользователя Как удалить автор (ы) из определенных должностей Как получить текущую категорию с пользовательскими сообщениями Можно ли использовать намерения Twitter с изображением почты в WordPress? Изменение размера изображения, отображаемого в wordpress двадцать четыре темы Не удается получить доступ к wp-admin без привязки косой черты повторно отправить имя пользователя и пароль с помощью настраиваемой кнопки Проблема с posts_groupby

Программно добавить пользовательскую страницу / путь / URL / маршрут в WordPress

Концептуально то, что я хочу сделать, очень просто. В моем плагине я хочу добавить один путь / маршрут к моему сайту wordpress:

[mysiteurl]/testpath 

… который загружает определенный файл, например:

 [filepath-to-my-plugin]/testfile.html 

Я играл с wp-rewrite, flush_rules, add_filter ('rewrite_rules_array', xxx), но все, что я получил, было для того, чтобы сайт принял путь, но отобразил главную страницу.

Ясно, что я пропустил что-то очень простое, но я искал какое-то время, не найдя, что мне нужно. Есть идеи?

Идея состоит в том, чтобы программно создать путь / url в плагине для сайта WordPress (например, «[mysite] / mypath»), а затем загрузить произвольный файл html или php. Если кто-то ищет что-то подобное, это работает для меня (в моем основном файле функций плагина):

 register_activation_hook(__FILE__, 'myplugin_activate'); function myplugin_activate () { create_custom_page('mytestpath'); } function create_custom_page($page_name) { $pageExists = false; $pages = get_pages(); foreach ($pages as $page) { if ($page->post_name == $page_name) { $pageExists = true; break; } } if (!$pageExists) { wp_insert_post ([ 'post_type' =>'page', 'post_name' => $page_name, 'post_status' => 'publish', ]); } } // End Plugin Activation //Start Catching URL add_filter( 'page_template', 'catch_mypath' ); function catch_mypath( $page_template ) { if ( is_page( 'mytestpath' ) ) { $page_template = __DIR__.'/mypage.html'; } return $page_template; } 

Рекомендации:

  • Этот ответ о создании пользовательских страниц в плагине . Спасибо, Фуксия .