Как добавить мое приложение PHP на страницу WordPress, сохраняя семантические URL?

Я перестраиваю статический веб-сайт для клиента, используя WordPress на основном домене, например domain.com. Существует также каталог веб-сайтов участников в каталоге.domain.com, который я надеялся перейти на главный веб-сайт – domain.com/directory/ (Мы хотим сделать это, во-первых, чтобы сохранить его в том же домене, но также так что мы сможем использовать один и тот же макет и стили – желательно, используя шаблон страницы.)

Приложение имеет главную страницу, представление списка и представление сведений о членах, а поисковые запросы отправляются с использованием $_GET . URL-адреса сделаны для того, чтобы выглядеть красивыми (семантические URL-адреса) с помощью mod_rewrite, например: directory.domain.com/list/people/all/by-name/page-1/20-per-page/

пример кода из файла .htaccess может быть:

RewriteRule ^list/([a-zA-Z0-9-\-]+)/([a-zA-Z0-9-\-]+)/([a-zA-Z0-9-\-]+)/$ /list.html?member-type=$1&area-name=$2&order-by=$3 [L]

Я думал о двух возможностях, чтобы достичь выше …

1) Если мы сохранили каталог участников в разных поддоменах, тогда можно было бы кэшировать и использовать копию пустой страницы на сайте WP, а затем использовать это как шаблон для каталога членов.

2) У кого-то есть PHP-код каталога членов на странице WP.

В идеале я хочу пойти (2), но я не уверен, как это реализовать.

Так что лучший способ достичь этого? В частности …

  • Как запустить PHP для приложения на странице WP?
  • Как мне получить доступ к переменным $ _GET и включить хорошие (семантические) URL-адреса, используя mod_rewrite? Например, если каталог находится на domain.com/directory/ как я могу заставить его передавать переменные $_GET , расширяя URL-адрес, но сохраняя одну и ту же страницу WP, например. domain.com/directory/list/people/all/by-name/page-1/20-per-page/ ?

Извините, если я не объяснил это очень хорошо, это немного сложно!

Его не очень хороший способ редактировать .htaccess для перезаписи текста wordpress (только для основных настроек URL-адресов из панели администратора)

Вы нашли свой ответ здесь: API-интерфейс для первичной перезаписи URL-адресов или API-интерфейс Rewrite: типы сообщений и таксономии

Пример :

 add_action( 'init', 'rewrite_rule' ); function rewrite_rule() { global $wp,$wp_rewrite; // Remember to flush the rules once manually after you added this code! add_rewrite_rule( // The regex to match the incoming URL 'yourpage/([a-z0-9-]+)/?', // The resulting internal URL: `index.php` because we still use WordPress // `pagename` because we use this WordPress page // `designer_slug` because we assign the first captured regex part to this variable 'index.php?pagename=yourpage&your_param=$matches[1]', // This is a rather specific URL, so we add it to the top of the list // Otherwise, the "catch-all" rules at the bottom (for pages and attachments) will "win" 'top' ); $wp_rewrite->flush_rules(); } add_filter( 'query_vars', 'query_vars' ); function query_vars( $query_vars ) { $query_vars['yp'] = 'your_param'; return $query_vars; } 

Вы получаете данные: $param_website_name = $wp->query_vars['your_param'];

я надеюсь, что вам помогут;)

@baritoneuk: для меня требуется несколько запросов и переписать правило. Я использовал для rewrite_rule ключ для add_rewrite_rule( // The regex to match the incoming URL 'yourpage/makey-([a-z0-9-]+)/?', 'index.php?pagename=yourpage&your_param=$matches[1]', 'top' ); : add_rewrite_rule( // The regex to match the incoming URL 'yourpage/makey-([a-z0-9-]+)/?', 'index.php?pagename=yourpage&your_param=$matches[1]', 'top' );

И в моей ссылке LINK таким образом я могу иметь несколько правил перезаписи с тем же перенаправлением и тем же шаблоном;)