Как работи системата за постоянни връзки на WordPress?

Аз съм php разработчик и в момента разработвам CMS/блог система. искам да добавя система за постоянни връзки като WordPress. любопитен съм как WordPress анализира постоянната връзка. Например как да получите данни като id и post name от:

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

Накратко, искам система да получава id и post name от URL адреса. Искам да дам възможност на потребителите да променят структурата на постоянните връзки като WordPress, като използват тагове като:

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

Как да получа данни в променливи като $id и $post_name, където стойностите ще бъдат 123 и example? Моля, помогни ми. Благодаря предварително.


person sani    schedule 03.07.2012    source източник


Отговори (2)


Често достъпният Apache модул mod_rewrite може да ви помогне с това. Това, което правите, е да напишете правила за пренаписване вътре в .htaccess файл и чрез пренаписването фантастични структури, които обикновено биха наподобявали файлова система, се изпращат към PHP файл като $_GET параметри.

Например, ако искате да замените нещо като: ?reactor=13 в /reactor/13/

Напишете това правило за пренаписване във файла .htaccess:

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

Сега, ако вместо index.php изтеглите /reactor/13/, вашият файл index.php трябва да види това в $_GET:

Array
(
    [id] => 13
)

Сега за вашия HTML код зависи от вас да създавате URL адреси и да се подчинявате на вашата обмислена структура.

Тези правила за пренаписване могат да бъдат объркващи, но следват логичен модел на регулярен израз.

WordPress използва по-силен подход от вмъкването на тези файлове за редактиране .htaccess, където изпращат всичко на WP, а след това WP решава/насочва останалото чрез вътрешни правила.

person pp19dd    schedule 03.07.2012
comment
Къде в източника на WP обработва връзките? Сигурен съм, че сте прав (създадените правила на mod_rewrite са много прости/общи), но ако мога да видя къде трябва да се случи това, ще ми помогне да диагностицирам странен проблем, който имам. - person jacobq; 17.12.2013
comment
WP всъщност е твърде сложен или абстрахиран, за да посочи едно място. Можете да видите това, като погледнете github.com/WordPress/WordPress/ - person pp19dd; 17.12.2013

Това зависи от сървърния софтуер, който използвате, но ако планирате да използвате вашите скриптове на Apache, обикновено това включва използването на нещо, наречено mod_rewrite и по-специално .htaccess файл.

Бих препоръчал да започнете с четене на урок по тази тема. Както обикновено, Google е ваш приятел.

person pbeck    schedule 03.07.2012