2012-07-03 1 views
5

Я разработчик php, и в настоящее время я разрабатываю систему CMS/blog. Я хочу добавить систему permalink, такую ​​как WordPress. Мне интересно, как WordPress анализирует постоянную ссылку. Например, как получить данные, как id и post name от:Как работает система permalink в WordPress?

example.com/id/123/post/example/ 

Короче говоря, я хочу, чтобы система id и post name из URL. Я хочу, чтобы разрешить пользователям изменять структуру постоянных ссылок, как WordPress, используя тег как:

id/%postid%/post/%postname%/ 

Как получить данные в переменных, как $id и $post_name, где значения будут 123 и example? Пожалуйста, помогите мне. Спасибо заранее.

ответ

0

Это зависит от того, какое серверное программное обеспечение вы используете, но если вы планируете использовать свои скрипты на Apache, обычно оно включает в себя использование чего-то под названием mod_rewrite и, в частности, файл .htaccess.

Я рекомендую начинать с чтения учебника по этому вопросу. As usual, Google is your friend.

5

Общедоступный модуль apache mod_rewrite может помочь вам с этим. То, что вы делаете, это писать правила перезаписи внутри файла .htaccess, а через переписывать причудливые структуры, которые обычно напоминают файловую систему, отправляются в файл PHP в виде параметров $ _GET.

Например, если вы хотите, чтобы заменить что-то вроде: ?reactor=13 в /reactor/13/

Написать это правило перезаписи в файле .htaccess:

RewriteEngine on 
RewriteRule reactor/([0-9]+)/$ index.php?id=$1 

Теперь, если вместо index.php вы подтяните/реактор/13 /, файл index.php должен увидеть это в $ _GET:

Array 
(
    [id] => 13 
) 

Теперь для вашего HTML-кода, это до вас, чтобы обработать URL- и подчиняйтесь своей продуманной структуре.

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

WordPress использует более сильный подход, чем вставка этих файлов .htaccess для редактирования, где они отправляют все в WP, а затем WP решает/направляет остальные по внутренним правилам.

+0

Где в источнике WP он обрабатывает ссылки? Я уверен, что вы правы (созданные mod_rewrite правила очень простые/общие), но если бы я мог видеть, где это должно произойти, это поможет мне диагностировать странную проблему, с которой я сталкиваюсь. – iX3

+1

WP на самом деле слишком запутан или абстрагирован, чтобы указать на одно место. Вы можете увидеть это, посмотрев https://github.com/WordPress/WordPress/search?q=permalink_structure&source=cc – pp19dd