API de reescriptura de WordPress

WordPress té una API molt útil que es diu “the reescriure API“. Suposo que ja teniu una “reescriptura d’URL”, aquest és el procés que fa que els URL siguin més llegibles. Per exemple, un URL escrit com aquest http://mysite.com/?page=12&category=12&author=47 no té gaire aspecte. És difícil recordar-ho i als motors de cerca no els agrada gaire. És per això que gairebé tots els CMS tenen una funció integrada que “reescriu” les adreces per fer-les semblar així: http://mysite.com/category/business/finance.


Reescriviu l’API i la classe WP_Rewrite

A WordPress, aquest procés també es coneix amb el nom de estructura enllaç permanent. Quan canvieu de l’estructura de enllaç per defecte a una estructura personalitzada, activeu automàticament la reescriptura API. Això és totalment automàtic. Però de vegades cal crear les vostres regles de reescriptura personalitzades.

En aquesta publicació, crearem funcions senzilles per crear una regla de reescriptura personalitzada simple. Diguem que volem obtenir un valor de referència, un tipus d’equivalent a un $ _GET [“referrer”].

Si fem un cop d’ull al Codex, podem veure a la pàgina de reescriure l’API que aquesta API té 6 funcions incorporades. L’ús més comú de la reescriptura és utilitzar aquestes funcions, hi ha molts tutorials al respecte, és per això que faré servir filtres en lloc de funcions. Perquè sí, la API de reescriptura també es pot utilitzar amb filtres. Aquests filtres es troben a la llista WP_Rescriure classe Pàgina del Còdex.

Afegir un nou Query Var

Per començar, hem de crear una funció que dirà a WordPress que s’ha definit una nova regla de reescriptura. Aquesta és la tasca del add_rewrite_rule ()add_rewrite_tag ()  funcions, però també podeu fer-ho utilitzant query_vars i reescriure_rules_array filtres. Per fer-ho, hem de crear dues funcions i dos filtres. La primera funció només afegirà una nova variable al filtre query_vars i la segona anirà a registrar aquesta nova variable a les regles de reescriptura global:

/ *
|--------------------------------------------------------------------------
| Inicia la reescriptura. Mostra: http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /

// Registre una nova var
function rc_add_query_vars ($ vars) {
$ vars [] = "referrer"; // nom de la var que es veu a l’URL
tornar $ vars;
}

// Agafeu la nostra funció a query_vars
add_filter ('query_vars', 'rc_add_query_vars');

// Afegiu la nova regla de reescriptura a les existents
function rc_add_rewrite_rules ($ rules) {
$ new_rules = array ('referrer / ([^ /] +) /? $' => 'index.php? referrer = $ coincideix [1]');
$ rules = $ new_rules + $ regles;
retornar les regles de $;
}

// Agafeu la funció a rewrite_rules_array
add_filter ('reescriure_rules_array', 'rc_add_rewrite_rules');

Un cop afegiu aquest codi a qualsevol fitxer de complement o al fitxer theme.php, arribeu a la configuració> Enllaços enllaç i deseu l’estructura de enllaços enllaçats. Aquesta acció és necessària. Ara hauríeu de poder accedir al vostre lloc amb aquest tipus o URL: http://mysite.com/referrer/your-name. Si voleu redirigir-vos a una pàgina determinada, canvieu index.php? Referrer = $ coincidències [1] per index.php? Pagename = la meva pàgina i referrer = $ coincideix [1] on “la meva pàgina” és la pàgina que es vol redirigit a la babosa.

Recuperació del valor variable

Ara que s’ha establert la regla de reescriptura, és possible que vulgueu accedir al valor variable. Però si feu un simple $ _GET [“referrer”], no obtindreu cap valor. Per recuperar els valors dels URL, cal connectar una funció al filtre “template_redirect”. L’enganxament al filtre “init” és massa aviat. A continuació, podeu accedir a les variables necessàries mitjançant l’objecte $ wp_query. Aquí teniu una mostra ràpida de com fer-ho:

// Recupera l’URL var
funció rc_get_my_vars () {
global $ wp_query;

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

// Agafeu la funció a template_redirect
add_action ('template_redirect', 'rc_get_my_vars');

A continuació, podeu fer ressò del valor $ referrer o utilitzar-lo com ho hauria fet amb una variable GET normal.

Per descomptat, podeu modificar l’ús de més d’una variable:

// a rc_add_query_vars ()
$ vars [] = "referrer";
$ vars [] = "campanya";

// a rc_add_rewrite_rules ()
$ new_rules = array ('referrer / ([^ /] +) / ([^ /] +) /? $' => 'index.php? pagename = la meva pàgina i referrer = $ coincidències [1] & campanya = $ matchs [ 2] ');

No oblideu que necessiteu el mòdul PHP mod_rewrite habilitat per utilitzar la reescriptura d’URL.

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