Rozhranie API na prepísanie WordPress

WordPress má skutočne užitočné API s názvom prepísať API“. Myslím, že už majú „prepisovanie adresy URL“ tento proces, vďaka ktorému sú adresy URL čitateľnejšie. Napríklad adresa URL napísaná takto: http://mysite.com/?page=12&category=12&author=47 nie je taká pekná. Je ťažké si to zapamätať a vyhľadávacím nástrojom sa nám to veľmi nepáči. Preto má takmer každý CMS zabudovanú funkciu, ktorá „prepisuje“ adresy URL tak, aby vyzerali takto: http://mysite.com/category/business/finance.


Prepísať API a triedu WP_Rewrite

Vo vnútri WordPress je tento proces známy aj ako permalinková štruktúra. Keď prepnete z predvolenej permalinkovej štruktúry na vlastnú štruktúru, automaticky aktivujete API na prepísanie. Toto je plne automatické. Niekedy však musíte vytvoriť svoje vlastné pravidlá prepisovania.

V tomto príspevku budeme vytvárať jednoduché funkcie na vytvorenie jednoduchého vlastného pravidla prepisovania. Povedzme, že chceme získať hodnotu sprostredkovateľa, niečo podobné $ _GET [„sprostredkovateľovi]].

Ak sa pozrieme na Codex, na stránke prepísania API vidíme, že toto rozhranie API má 6 zabudovaných funkcií. Najbežnejším používaním prepísania je použitie týchto funkcií, o tom je veľa návodov, preto namiesto funkcií použijem filtre. Pretože áno, rozhranie API na prepísanie sa dá použiť aj s filtrami! Tieto filtre sú uvedené na zozname WP_Rewrite class Stránka Codex.

Pridanie nového dotazu Var

Na začiatok musíme vytvoriť funkciu, ktorá povie WordPress, že je nastavené nové pravidlo prepisovania. Toto je práca add_rewrite_rule ()add_rewrite_tag ()  funkcie, ale môžete to urobiť aj pomocou query_vars a rewrite_rules_array filtre. Na to je potrebné vytvoriť dve funkcie a dva filtre. Prvou funkciou bude jednoducho pridať novú premennú do filtra query_vars a druhou bude táto nová premenná zaregistrovať do pravidiel globálneho prepisovania:

/ *
|--------------------------------------------------------------------------
| Spustite prepísanie. Vzorka: http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /

// Zaregistrujte novú var
function rc_add_query_vars ($ vars) {
$ vars [] = "referrer"; // názov var, ako je uvedený v adrese URL
return $ vars;
}

// Zahrňte našu funkciu do query_vars
add_filter ('query_vars', 'rc_add_query_vars');

// Pridajte nové pravidlo prepisovania k existujúcim
function rc_add_rewrite_rules ($ rules) {
$ new_rules = array ('referrer / ([^ /] +) /? $' => 'index.php? referrer = $ match [1]');
$ rules = $ new_rules + $ rules;
návratové pravidlá $;
}

// Zaveste funkciu do rewrite_rules_array
add_filter ('rewrite_rules_array', 'rc_add_rewrite_rules');

Po pridaní tohto kódu do ktoréhokoľvek z vašich doplnkových súborov alebo do súboru topic.php sa dostanete do nastavení> Permalinky a uložte štruktúru permalinks. Táto akcia je potrebná. Teraz by ste mali mať prístup k svojim webovým stránkam pomocou tohto druhu alebo adresy URL: http://mysite.com/referrer/vasadomeno. Ak chcete byť presmerovaní na konkrétnu stránku, zmeňte index.php? Referrer = $ zápasy [1] podľa index.php? Pagename = moja stránka a referrer = $ zápasy [1], kde „moja stránka“ je stránka, ktorá má byť presmerovaný na slug.

Načítanie hodnoty premennej

Po nastavení pravidla prepisovania budete pravdepodobne chcieť získať prístup k hodnote premennej. Ak však urobíte jednoduchý $ _GET [referrer], nedostanete žiadnu hodnotu. Na načítanie hodnôt vars URL musíte funkciu prepojiť s filtrom „template_redirect“. Zapojenie do filtra „init“ je príliš skoro. Potom môžete získať prístup k potrebným premenným prostredníctvom objektu $ wp_query. Tu je stručná ukážka, ako to urobiť:

// Získať adresu URL var
function rc_get_my_vars () {
global $ wp_query;

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

// Zaveste funkciu do template_redirect
add_action ('template_redirect', 'rc_get_my_vars');

Potom môžete odporučiť hodnotu $ referrer alebo ju použiť, ako by to bolo pri normálnej premennej GET.

Môžete samozrejme upraviť použitie viacerých premenných:

// in rc_add_query_vars ()
$ vars [] = "referrer";
$ vars [] = "campaign";

// in rc_add_rewrite_rules ()
$ new_rules = array ('referrer / ([^ /] +) / ([^ /] +) /? $' => 'index.php? pagename = moja stránka a referrer = $ zápasy [1] a kampaň = $ zápasy [ 2] ");

Nezabudnite, že na prepísanie adresy URL 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