WordPress Rewrite API

WordPress har ett riktigt användbart API som heter “the skriv om API”. Jag antar att det redan har “url rewriting”, det här är processen som gör URL: er mer läsbara. Till exempel är en url skriven som denna http://mysite.com/?page=12&category=12&author=47 inte så snygg. Det är svårt att komma ihåg det och sökmotorer tycker inte om det så mycket. Det är därför nästan alla CMS har en inbyggd funktion som “skriver om” webbadresser för att få dem att se ut så här: http://mysite.com/category/business/finance.


Omskriva API och klassen WP_Rewrite

Inuti WordPress är denna process också känd som permalänkstruktur. När du byter från standard permalänkstrukturen till en anpassad struktur aktiverar du automatiskt omskrivnings-API: et. Detta är helt automatiskt. Men ibland måste du skapa dina egna anpassade omskrivningsregler.

I det här inlägget kommer vi att skapa enkla funktioner för att skapa en enkel anpassad omskrivningsregel. Låt oss säga att vi vill få ett referensvärde, som motsvarar en $ _GET [“referrer”].

Om vi ​​tittar på Codex kan vi se på omskrivnings-API-sidan att detta API har 6 inbyggda funktioner. Den vanligaste användningen av omskrivningen är att använda dessa funktioner, det finns gott om självstudier om det, det är därför jag kommer att använda filter istället för funktioner. Eftersom ja, omskrivnings API kan också användas med filter! Dessa filter är listade på WP_Rewrite klass Codex-sida.

Lägga till en ny fråga Var

För att börja måste vi skapa en funktion som säger WordPress att en ny omskrivningsregel är inställd. Detta är jobbet för add_rewrite_rule () och add_rewrite_tag ()  funktioner, men du kan också göra det med query_vars och rewrite_rules_array filtrerar. För att göra det måste vi skapa två funktioner och två filter. Den första funktionen kommer att helt enkelt lägga till en ny variabel till query_vars-filtret, och den andra kommer att registrera den här nya variabeln i de globala omskrivningsreglerna:

/ *
|--------------------------------------------------------------------------
| Börja omskriva. Exempel: http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /

// Registrera en ny var
funktion rc_add_query_vars ($ vars) {
$ vars [] = "referrer"; // namn på var som visas i URL: n
returnera $ vars;
}

// Koppla in vår funktion i fråga_vars
add_filter ('query_vars', 'rc_add_query_vars');

// Lägg till den nya omskrivningsregeln till existerande
funktion rc_add_rewrite_rules ($ regler) {
$ new_rules = array ('referrer / ([^ /] +) /? $' => 'index.php? referrer = $ matchar [1]');
$ regler = $ new_rules + $ regler;
returnera $ regler;
}

// Koppla in funktionen till omskriva_rules_array
add_filter ('omskriva_rules_array', 'rc_add_rewrite_rules');

När du lägger till den här koden till någon av din plugin-fil eller din temafunktioner.php-fil, kom du till inställningar> Permalänk och sparar permalänkstrukturen. Denna åtgärd behövs. Du bör nu kunna komma åt din webbplats med den här typen eller url: http://mysite.com/referrer/your-name. Om du vill omdirigeras på en specifik sida, ändra index.php? Referrer = $ matchningar [1] efter index.php? Pagename = my-page & referrer = $ matchar [1] där “min-sida” är den sida som ska vara omdirigerade till snigel.

Hämtar det variabla värdet

Nu när din omskrivningsregel är inställd kanske du vill komma åt variabelvärdet. Men om du gör en enkel $ _GET [“referrer”] får du inget värde. För att hämta värdena URL-adress måste du ansluta en funktion till filtret “template_redirect”. Att ansluta till “init” -filtret är för tidigt. Sedan kan du komma åt de önskade variablerna via $ wp_query-objektet. Här är ett snabbt exempel på hur du gör det:

// Hämta URL-var
funktion rc_get_my_vars () {
global $ wp_query;

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

// Koppla funktionen till template_redirect
add_action ('template_redirect', 'rc_get_my_vars');

Därefter kan du återkalla referensvärdet för $ eller använda det som skulle ha gjort med en normal GET-variabel.

Du kan naturligtvis ändra användning av mer än en variabel:

// i rc_add_query_vars ()
$ vars [] = "referrer";
$ vars [] = "kampanj";

// i rc_add_rewrite_rules ()
$ new_rules = array ('referrer / ([^ /] +) / ([^ /] +) /? $' => 'index.php? pagename = my-page & referrer = $ matchar [1] & kampanj = $ matchningar [ 2] ');

Glöm inte att du behöver PHP mod_rewrite-modul aktivera för att använda url-omskrivning.

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