Как создать настраиваемые маршруты URL?

У меня очень своеобразное требование, надеюсь, я могу объяснить это, не будучи слишком запутанным. Я создал шаблон страницы, где я перечисляю некоторые свойства, которые я получаю из внешнего XML-файла, до сих пор нет проблем, скажем, URL-адрес выглядит следующим образом: http://www.mysite.com/properties/

Каждое свойство имеет ссылку, которая должна перенаправлять пользователя на страницу «Единственное свойство», которая отображает больше информации об этом, что мне было интересно, если есть способ сделать ссылку, подобную этой http://www.mysite.com/properties / 123 ? Где «123» будет идентификатором свойства, в основном, если у меня есть url like properties / some_id, я хочу иметь возможность загружать файл вида (например, файлы single.php или page.php), но специфичные для этого условия URL-адреса ,

Это возможно? Заранее спасибо!

Solutions Collecting From Web of "Как создать настраиваемые маршруты URL?"

Добавьте это в функцию functions.php вашей темы или поместите в плагин .

add_action( 'init', 'wpse26388_rewrites_init' ); function wpse26388_rewrites_init(){ add_rewrite_rule( 'properties/([0-9]+)/?$', 'index.php?pagename=properties&property_id=$matches[1]', 'top' ); } add_filter( 'query_vars', 'wpse26388_query_vars' ); function wpse26388_query_vars( $query_vars ){ $query_vars[] = 'property_id'; return $query_vars; } 

Это добавляет правило перезаписи, которое направляет запросы /properties/ с любой комбинацией чисел, следующих за properties pagename, с заданием var property_id . Просто не забудьте посетить страницу настроек постоянных ссылок и сохранить, чтобы сбросить правила перезаписи, поэтому это новое правило будет включено.

В вашем шаблоне page-properties.php get_query_var('property_id') вернет идентификатор свойства, если он был установлен, если он не показывает страницу свойств по умолчанию.

Другой способ сделать это:

 add_action('init', function() { add_rewrite_rule( '^properties/([0-9]+)/?', 'index.php?pagename=properties&property_id=$matches[1]', 'top' ); }, 10, 0); add_action('init', function() { add_rewrite_tag( '%property_id%', '([^&]+)' ); }, 10, 0); 

Codex Rewrite API / добавить правило перезаписи

Codex Rewrite API / добавить тег rewrite