API перезапису WordPress

WordPress має дійсно корисний API під назвою “the переписати API“. Я думаю, що вже є “переписування URL-адреси”, саме цей процес робить URL-адреси більш читабельними. Наприклад, URL-адреса, написана на зразок цього http://mysite.com/?page=12&category=12&author=47, не так добре виглядає. Важко запам’ятати це, а пошукові системи не так його люблять. Ось чому майже кожна CMS має вбудовану функцію, яка “переписує” URL-адреси, щоб вони виглядали так: http://mysite.com/category/business/finance.


API перезапису та клас WP_Rewrite

Всередині WordPress цей процес також відомий як структура постійних посилань. Коли ви переходите від структури за умовчанням постійної посилання до спеціальної структури, ви автоматично активуєте перезаписувати API. Це повністю автоматично. Але іноді потрібно створити власні правила перезапису.

У цій публікації ми збираємося створити прості функції, щоб створити просте користувацьке правило перезапису. Скажімо, ми хочемо отримати значення перенаправлення, подібне до $ _GET [‘referer’].

Якщо ми подивимось на 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? referencerer = $ відповідає [1]');
$ правила = $ new_rules + $ правила;
повернути $ правила;
}

// Приєднайте функцію до rewrite_rules_array
add_filter ('rewrite_rules_array', 'rc_add_rewrite_rules');

Як тільки ви додасте цей код до будь-якого файлу плагіна або до теми теми function.php, перейдіть до налаштувань> Постійні посилання та збережіть структуру постійних посилань. Ця дія потрібна. Тепер ви можете мати доступ до свого веб-сайту за допомогою такого типу або URL-адреси: http://mysite.com/referrer/your-name. Якщо ви хочете бути перенаправлені на певну сторінку, змініть index.php? Referer = $ match [1] на index.php? Pagename = my-page & referencerer = $ match [1], де “моя сторінка” – це сторінка, яку потрібно буде перенаправлений на кулі.

Отримання значення змінної

Тепер, коли встановлено ваше правило перезапису, ви можете отримати доступ до значення змінної. Але якщо ви зробите простий $ _GET [‘referer’], ви нічого не отримаєте. Щоб отримати значення vars URL, вам потрібно підключити функцію до фільтра “template_redirect”. Причепитися до фільтра “init” – зарано. Тоді ви можете отримати доступ до необхідних змінних через об’єкт $ wp_query. Ось короткий зразок того, як це зробити:

// Отримати var URL
функція 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');

Далі можна повторити значення $ referer або використовувати його так, як це було б із звичайною змінною GET.

Звичайно, ви можете змінити використання декількох змінних:

// in rc_add_query_vars ()
$ vars [] = "референт";
$ vars [] = "кампанія";

// in rc_add_rewrite_rules ()
$ new_rules = array ('референт / ([^ /] +) / ([^ /] +) /? $' => 'index.php? pagename = моя сторінка & referencerer = $ match [1] & кампанія = $ матчі [ 2] ');

Не забувайте, що для перезапису URL-адреси вам потрібен модуль PHP mod_rewrite.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map