WordPress Rewrite API

WordPress ima zaista koristan API nazvan “the prepisati API„. Valjda to već ima “prepisivanje URL-ova”, ovo je postupak koji URL-ove čini čitljivijim. Na primjer, URL napisan poput ove http://mysite.com/?page=12&category=12&author=47 nije baš tako dobar. Teško ga je zapamtiti, a tražilice ga ne vole toliko. To je razlog zašto gotovo svaki CMS ima ugrađenu funkciju koja “preispituje” URL-ove kako bi izgledali ovako: http://mysite.com/category/business/finance.


API za prepisivanje i klasa WP_Rewrite

Unutar WordPress-a, ovaj je postupak poznat i kao struktura permalinkksa. Kad pređete iz zadane strukture permalink na prilagođenu strukturu, automatski aktivirate API za prepisivanje. Ovo je potpuno automatski. Ali ponekad morate kreirati vlastita pravila prepisivanja.

U ovom ćemo postu stvoriti jednostavne funkcije za stvaranje jednostavnog prilagođenog pravila za prepisivanje. Recimo da želimo dobiti vrijednost preporuke, koja je jednaka $ _GET [‘referent’].

Ako pogledamo Codex, na stranici za prepisivanje API-ja možemo vidjeti da ovaj API ima 6 ugrađenih funkcija. Najčešća upotreba prepisa je uporaba ovih funkcija, o tome postoji dosta udžbenika i zato ću umjesto funkcija koristiti filtre. Jer da, API za prepisivanje također se može koristiti s filtrima! Ti su filtri navedeni na popisu WP_Rewrite klasa Stranica kodova.

Dodavanje nove varijante upita

Za početak moramo stvoriti funkciju koja će WordPressu reći da je postavljeno novo pravilo prepisivanja. Ovo je posao add_rewrite_rule ()add_rewrite_tag ()  funkcije, ali to možete učiniti i pomoću query_vars i rewrite_rules_array filtrira. Da bismo to učinili, moramo stvoriti dvije funkcije i dva filtra. Prva će funkcija jednostavno dodati novu varijablu u filter query_vars, a druga će registrirati ovu novu varijablu u globalna pravila za prepisivanje:

/ *
|--------------------------------------------------------------------------
| Počnite Prepisati. Uzorak: http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /

// Registrirajte novu var
funkcija rc_add_query_vars ($ vars) {
$ vars [] = "referent"; // ime varijable kao što se vidi u URL-u
vratiti $ vars;
}

// Spojite našu funkciju na query_vars
add_filter ('query_vars', 'rc_add_query_vars');

// Dodajte novo pravilo prepisivanja postojećim
funkcija rc_add_rewrite_rules ($ pravila) {
$ new_rules = array ('referent / ([^ /] +) /? $' => 'index.php? referent = $ odgovara [1]');
$ rules = $ new_rules + $ pravila;
vratiti $ pravila;
}

// Priključite funkciju u rewrite_rules_array
add_filter ('rewrite_rules_array', 'rc_add_rewrite_rules');

Nakon što dodate ovaj kôd u bilo koju datoteku dodatka ili datoteku tematike function.php, otvorite postavke> Permalinks i spremite strukturu trajne veze. Ova akcija je potrebna. Sada biste trebali moći pristupiti svojoj web stranici s takvom vrstom ili URL-om: http://mysite.com/referrer/your-name. Ako želite biti preusmjereni na određenu stranicu, promijenite index.php? Referent = $ match [1] by index.php? Pagename = moja stranica i referent = $ podudara [1] gdje je “moja stranica” stranica koja će biti preusmjereni na šljamu.

Dohvaćanje varijable vrijednosti

Sad kad je postavljeno vaše pravilo prepisivanja, možda biste željeli pristupiti vrijednosti varijable. Ali ako napravite jednostavan $ _GET [‘referent’], nećete dobiti nikakvu vrijednost. Da biste preuzeli vrijednosti vars URL-a, trebate povezati funkciju filtra “template_redirect”. Spajanje na “init” filter je prerano. Tada možete pristupiti potrebnim varijablama putem objekta $ wp_query. Evo kratkog uzorka kako to učiniti:

// Dohvaćanje var
funkcija rc_get_my_vars () {
globalni $ wp_query;

if (isset ($ wp_query-> query_vars ['referent'])) {
$ referencerer = get_query_var ('referent');
}
}

// Priključite funkciju u template_redirect
dodavanje ('template_redirect', 'rc_get_my_vars');

Nakon toga možete ponoviti vrijednost preporuke $ ili je upotrijebiti kao što bi to učinio s normalnom GET varijabli.

Možete, naravno, izmijeniti upotrebu više varijabli:

// u rc_add_query_vars ()
$ vars [] = "referent";
$ vars [] = "kampanja";

// u rc_add_rewrite_rules ()
$ new_rules = array ('referent / ([^ /] +) / ([^ /] +) /? $' => 'index.php? pagename = moja stranica i referent = $ podudara [1] & kampanja = $ podudara [ 2]);

Ne zaboravite da vam je potreban modul PHP mod_rewrite za upotrebu pisanja URL-a.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me