API za prepisovanje WordPress-a

WordPress ima res uporaben API, imenovan “the prepisati API“. Mislim, da so že bili “prepisovanje URL-jev”, prav zaradi tega so URL-ji bolj berljivi. Na primer URL, napisan kot ta http://mysite.com/?page=12&category=12&author=47, ni videti tako dobro. Težko si je zapomniti in iskalniki ne marajo tako zelo. Zato ima skoraj vsak CMS vgrajeno funkcijo, ki “prenovi” url, da bi bili videti takole: http://mysite.com/category/business/finance.


API za prepisovanje in razred WP_Rewrite

Znotraj WordPress-a je ta postopek znan tudi kot struktura permalinks. Ko preklopite iz privzete strukture stalne povezave v strukturo po meri, samodejno aktivirate API za prepisovanje. To je popolnoma samodejno. Včasih pa morate ustvariti lastna pravila za prepisovanje po meri.

V tej objavi bomo ustvarili preproste funkcije za ustvarjanje preprostega pravila za prepisovanje po meri. Recimo, da želimo dobiti referenčno vrednost, ki je enakovredna $ _GET [‘napotitelj’].

Če si ogledamo Codex, lahko na strani za prepisovanje API-ja vidimo, da ima ta API 6 vgrajenih funkcij. Najpogostejša uporaba prepisovanja je uporaba teh funkcij, o tem obstaja veliko vadnic, zato bom namesto funkcij uporabil filtre. Ker da, lahko API za prepisovanje uporabimo tudi s filtri! Ti filtri so navedeni na seznamu WP_Rewrite razred Stran Codex.

Dodajanje nove poizvedbe Var

Za začetek moramo ustvariti funkcijo, ki bo WordPressu sporočila, da je nastavljeno novo pravilo za prepisovanje. To je delo urada add_rewrite_rule () in add_rewrite_tag ()  funkcije, vendar lahko to storite tudi s pomočjo query_vars in rewrite_rules_array filtri. Da bi to naredili, moramo ustvariti dve funkciji in dva filtra. Prva funkcija bo preprosto dodala novo spremenljivko v filter query_vars, druga pa bo registrirala to novo spremenljivko v globalna pravila za prepis:

/ *
|--------------------------------------------------------------------------
| Začnite prepisati. Vzorec: http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /

// Registrirajte novo var
funkcija rc_add_query_vars ($ vars) {
$ vars [] = "napotilec"; // ime var, kot je vidno v URL-ju
vrniti $ vars;
}

// Priključite našo funkcijo v query_vars
add_filter ('query_vars', 'rc_add_query_vars');

// Dodajte novo pravilo za ponovno zapisovanje obstoječim
funkcija rc_add_rewrite_rules ($ pravila) {
$ new_rules = array ('napotilec / ([^ /] +) /? $' => 'index.php? referencerer = $ se ujema [1]');
$ rules = $ new_rules + $ pravila;
vrniti $ pravila;
}

// Priključite funkcijo v rewrite_rules_array
add_filter ('rewrite_rules_array', 'rc_add_rewrite_rules');

Ko dodate to kodo v katero koli datoteko vtičnikov ali tematsko datoteko function.php, se pomaknite do nastavitev> Permalinks in shranite strukturo trajnih povezav. To dejanje je potrebno. Zdaj bi lahko dostopali do svojega spletnega mesta s tovrstnimi ali URL-ji: http://mysite.com/referrer/your-name. Če želite biti preusmerjeni na določeno stran, spremenite index.php? Referencerer = $ match [1] z indeksom.php? Pagename = moja stran in napotilec = $ match [1], kjer je “moja stran” stran, ki bo preusmerjen na polž.

Pridobivanje spremenljive vrednosti

Zdaj, ko je vaše pravilo za ponovno zapisovanje nastavljeno, boste morda želeli dostopati do spremenljive vrednosti. Če naredite preprost $ _GET [‘napotitelj’], ne boste dobili nobene vrednosti. Če želite pridobiti vrednosti vars URL, morate funkcijo priključiti na filter “template_redirect”. Prikleniti filter “init” je prezgodaj. Nato lahko dostop do potrebnih spremenljivk prek predmeta $ wp_query. Tu je kratki vzorec, kako to storiti:

// Pridobi var
funkcija rc_get_my_vars () {
globalna $ wp_query;

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

// Priključite funkcijo v template_redirect
dodajanje ('template_redirect', 'rc_get_my_vars');

Nato lahko odmevate vrednost napotitve $ ali jo uporabite tako, kot bi to storili z običajno spremenljivko GET.

Seveda lahko spremenite uporabo več kot ene spremenljivke:

// v rc_add_query_vars ()
$ vars [] = "napotilec";
$ vars [] = "oglaševalska akcija";

// v rc_add_rewrite_rules ()
$ new_rules = array ('napotilec / ([^ /] +) / ([^ /] +) /? $' => 'index.php? pagename = moja stran in napotilec = $ match [1] & kampanja = $ match [ 2] ');

Ne pozabite, da za prepisovanje URL-jev potrebujete modul 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