API-ul WordPress Rewrite

WordPress are o API cu adevărat utilă numită „the rescrie API„. Cred că deja au „rescriere url”, acesta este procesul care face URL-urile mai lizibile. De exemplu, o adresă URL scrisă ca asta http://mysite.com/?page=12&category=12&author=47 nu arată prea bine. Este greu să-ți amintești, iar motoarele de căutare nu le place atât de mult. Acesta este motivul pentru care aproape fiecare CMS are o funcție încorporată care „rescrie” adresează adresele URL pentru a le face să arate astfel: http://mysite.com/category/business/finance.


Rescrie API și clasa WP_Rewrite

În WordPress, acest proces este cunoscut și sub denumirea de structură permalink. Când treceți de la structura implicită de permalink la o structură personalizată, activați automat rescrierea API. Acest lucru este complet automat. Dar uneori trebuie să vă creați propriile reguli de rescriere personalizate.

În acest post, vom crea funcții simple pentru a crea o regulă simplă de rescriere personalizată. Să spunem că vrem să obținem o valoare de referitor, un fel de echivalent cu un $ _GET [„referrer”].

Dacă ne uităm la Codex, putem vedea pe pagina rescrierii API că această API are 6 funcții încorporate. Cea mai obișnuită utilizare a rescrierii este de a utiliza aceste funcții, există o mulțime de tutoriale despre asta, de aceea voi folosi filtre în loc de funcții. Pentru că da, API-ul rescriere poate fi folosit și cu filtre! Filtrele respective sunt listate pe WP_Rescrie clasa Pagina Codex.

Adăugarea unui nou Query Var

Pentru a începe, trebuie să creăm o funcție care să îi spună WordPress că este setată o nouă regulă de rescriere. Aceasta este treaba din add_rewrite_rule () și add_rewrite_tag ()  funcții, dar o puteți face folosind și query_vars și rewrite_rules_array filtre. Pentru a face acest lucru, trebuie să creăm două funcții și două filtre. Prima funcție va adăuga pur și simplu o nouă variabilă la filtrul query_vars, iar a doua va înregistra această nouă variabilă în regulile globale de rescriere:

/ *
|--------------------------------------------------------------------------
| Începe rescrierea. Exemplu: http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /

// Înregistrați o nouă var
function rc_add_query_vars ($ vars) {
$ vars [] = "referrer"; // numele varului așa cum se vede în adresa URL
returnare $ $;
}

// Legați-ne funcția în query_vars
add_filter ('query_vars', 'rc_add_query_vars');

// Adăugați noua regulă de rescriere la cele existente
function rc_add_rewrite_rules ($ reguli) {
$ new_rules = array ('referrer / ([^ /] +) /? $' => 'index.php? referrer = $ potriviri [1]');
$ rules = $ new_rules + $ reguli;
returneaza regulile $;
}

// Legați funcția în rewrite_rules_array
add_filter ('rewrite_rules_array', 'rc_add_rewrite_rules');

După ce adăugați acest cod la oricare dintre fișierele de plugin sau fișierul dvs. theme.php, ați ajuns la setări> Permalink, și salvați structura de permalinkuri. Această acțiune este necesară. Acum ar trebui să puteți accesa site-ul dvs. cu acest tip sau url: http://mysite.com/referrer/your-name. Dacă doriți să vă redirecționați într-o anumită pagină, schimbați index.php? Referrer = $ potriviri [1] de index.php? Pagename = my-page & referrer = $ potriviri [1] unde „pagina mea” este pagina care trebuie să fie redirecționat către slugă.

Preluarea valorii variabilei

Acum că regula dvs. de rescriere este setată, este posibil să doriți să accesați valoarea variabilă. Dar dacă efectuați un simplu $ _GET [„referrer”], nu veți obține nicio valoare. Pentru a prelua valorile adreselor URL, trebuie să conectați o funcție la filtrul „template_redirect”. Accesarea filtrului „init” este prea devreme. Apoi puteți accesa variabilele necesare prin intermediul obiectului $ wp_query. Iată un eșantion rapid despre cum se face:

// Preluare URL var
function rc_get_my_vars () {
global $ wp_query;

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

// Legați funcția în template_redirect
add_action ('template_redirect', 'rc_get_my_vars');

Puteți ecua în continuare valoarea referrerului $ sau o puteți utiliza așa cum s-ar fi făcut cu o variabilă GET normală.

Desigur, puteți modifica utilizarea mai multor variabile:

// în rc_add_query_vars ()
$ vars [] = "referrer";
$ vars [] = "campanie";

// în rc_add_rewrite_rules ()
$ new_rules = array ('referrer / ([^ /] +) / ([^ /] +) /? $' => 'index.php? pagename = pagina mea & referrer = $ meciuri [1] & campania = $ meciuri [ 2] ');

Nu uitați că aveți nevoie de modulul PHP mod_rewrite activat pentru a utiliza rescrierea urlului.

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