WordPress има наистина полезен API, наречен „the пренапишете API“. Предполагам, че вече има „пренаписване на URL адрес“, това е процесът, който прави URL адресите по-четими. Например URL адрес, написан като този http://mysite.com/?page=12&category=12&author=47, не е толкова добре изглеждащ. Трудно е да го запомните и търсачките не го харесват толкова. Ето защо почти всеки CMS има вградена функция, която „пренаписва“ URL адреси, за да изглежда така: http://mysite.com/category/business/finance.
Contents
API за пренаписване и клас WP_Rewrite
Вътре в WordPress този процес е известен още като перманентна структура. Когато преминете от структурата на постоянна връзка по подразбиране към персонализирана структура, автоматично активирате API за презапис. Това е напълно автоматично. Но понякога трябва да създадете свои собствени правила за пренаписване.
В тази публикация ще създадем прости функции, за да създадем обикновено правило за пренаписване по избор. Нека кажем, че искаме да получим стойност на реферала, подобна на $ _GET [‘референт’].
Ако разгледаме Codex, на страницата за пренаписване на API можем да видим, че този API има 6 вградени функции. Най-честото използване на пренаписването е използването на тези функции. Има много ръководства за това, затова ще използвам филтри вместо функции. Защото да, API за презапис може да се използва и с филтри! Тези филтри са изброени в WP_Rewrite клас Кодекс страница.
Добавяне на нова променлива заявка
За да започнем, трябва да създадем функция, която да каже на WordPress, че е зададено ново правило за пренаписване. Това е работата на add_rewrite_rule () и add_rewrite_tag () функции, но можете да го направите и с помощта на query_vars и rewrite_rules_array филтри. За целта трябва да създадем две функции и два филтъра. Първата функция просто ще добави нова променлива към филтъра query_vars, а втората ще регистрира тази нова променлива в глобалните правила за презаписване:
/ *
|--------------------------------------------------------------------------
| Започнете пренаписване. Пример: http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /
// Регистрирайте нова var
функция rc_add_query_vars ($ vars) {
$ vars [] = "референт"; // име на var, както се вижда в URL адреса
върнете $ vars;
}
// Закачете нашата функция в query_vars
add_filter ('query_vars', 'rc_add_query_vars');
// Добавете новото правило за пренаписване към съществуващите
функция rc_add_rewrite_rules ($ правила) {
$ new_rules = array ('референт / ([^ /] +) /? $' => 'index.php? referenceer = $ съответства [1]');
$ правила = $ new_rules + $ правила;
върнете $ правила;
}
// Свържете функцията в rewrite_rules_array
add_filter ('rewrite_rules_array', 'rc_add_rewrite_rules');
След като добавите този код към който и да е от вашия плъгин файл или вашия тематичен function.php файл, стигнете до настройки> Permalinks и запазете структурата на перманентните връзки. Това действие е необходимо. Вече трябва да имате достъп до вашия сайт с такъв вид или URL адрес: http://mysite.com/referrer/your-name. Ако искате да бъдете пренасочени към конкретна страница, променете index.php? Referer = $ match [1] by index.php? Pagename = my-page & referencerer = $ match [1], където „моята страница“ е страницата, която трябва да бъде пренасочен към плужек.
Извличане на променливата стойност
Сега, когато е зададено вашето правило за презапис, може да искате да получите достъп до променливата стойност. Но ако направите обикновен $ _GET [‘референт’], няма да получите никаква стойност. За да извлечете стойностите на URL vars, трябва да свържете функция към филтъра „template_redirect“. Закачването към филтъра „init“ е твърде рано. След това можете да получите достъп до необходимите променливи чрез обекта $ wp_query. Ето една бърза извадка как да го направите:
// Изтегляне на var
функция rc_get_my_vars () {
глобална $ wp_query;
if (isset ($ wp_query-> query_vars ['referer'])) {
$ referencerer = get_query_var ('препращащ');
}
}
// Свържете функцията в template_redirect
добавяне ('template_redirect', 'rc_get_my_vars');
След това можете да повтаряте стойността на препращащия $ или да го използвате, както би направил с нормална променлива GET.
Можете, разбира се, да промените използването на повече от една променлива:
// в rc_add_query_vars ()
$ vars [] = "референт";
$ vars [] = "кампания";
// в rc_add_rewrite_rules ()
$ new_rules = array ('референт / ([^ /] +) / ([^ /] +) /? $' => 'index.php? pagename = my-page & referencerer = $ match [1] & кампания = $ съвпадения [ 2]);
Не забравяйте, че трябва да активирате PHP mod_rewrite модул, за да използвате пренаписване на URL.