L’API di riscrittura di WordPress

WordPress ha un’API davvero utile chiamata “the riscrivi API“. Immagino che abbiano già una “riscrittura degli URL”, questo è il processo che rende più leggibili gli URL. Ad esempio, un URL scritto come questo http://mysite.com/?page=12&category=12&author=47 non è così bello. È difficile ricordarlo e ai motori di ricerca non piace così tanto. Ecco perché quasi ogni CMS ha una funzione integrata che “riscrive” gli URL per farli apparire così: http://mysite.com/category/business/finance.


L’API di riscrittura e la classe WP_Rewrite

All’interno di WordPress, questo processo è anche noto come struttura dei permalink. Quando si passa dalla struttura di permalink predefinita a una struttura personalizzata, si attiva automaticamente l’API di riscrittura. Questo è completamente automatico. Ma a volte è necessario creare le proprie regole di riscrittura personalizzate.

In questo post, creeremo semplici funzioni per creare una semplice regola di riscrittura personalizzata. Diciamo che vogliamo ottenere un valore di referrer, una sorta di equivalente a $ _GET [“referrer”].

Se diamo uno sguardo al Codex, possiamo vedere sulla pagina di riscrittura dell’API che questa API ha 6 funzioni integrate. L’uso più comune della riscrittura è usare queste funzioni, ci sono molti tutorial su questo, ecco perché userò i filtri invece delle funzioni. Perché sì, l’API di riscrittura può essere utilizzata anche con i filtri! Tali filtri sono elencati su Classe WP_Rewrite Pagina del codice.

Aggiunta di una nuova query Var

Per iniziare, dobbiamo creare una funzione che indichi a WordPress che è stata impostata una nuova regola di riscrittura. Questo è il lavoro di add_rewrite_rule ()add_rewrite_tag ()  funzioni, ma puoi anche farlo usando query_vars e rewrite_rules_array Filtri. Per fare ciò, dobbiamo creare due funzioni e due filtri. La prima funzione aggiungerà semplicemente una nuova variabile al filtro query_vars e la seconda registrerà questa nuova variabile nelle regole di riscrittura globale:

/ *
|--------------------------------------------------------------------------
| Inizia a riscrivere. Esempio: http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /

// Registra una nuova var
funzione rc_add_query_vars ($ vars) {
$ vars [] = "referrer"; // nome del var visualizzato nell'URL
restituisce $ var;
}

// Aggancia la nostra funzione a query_vars
add_filter ('query_vars', 'rc_add_query_vars');

// Aggiunge la nuova regola di riscrittura a quelle esistenti
funzione rc_add_rewrite_rules ($ rules) {
$ new_rules = array ('referrer / ([^ /] +) /? $' => 'index.php? referrer = $ match [1]');
$ rules = $ new_rules + $ rules;
restituisce $ regole;
}

// Aggancia la funzione in rewrite_rules_array
add_filter ('rewrite_rules_array', 'rc_add_rewrite_rules');

Una volta aggiunto questo codice a uno qualsiasi dei tuoi file plugin o del tuo file funzioni.php tema, accedi a impostazioni> Permalink e salva la struttura dei permalink. Questa azione è necessaria. Ora dovresti essere in grado di accedere al tuo sito con questo tipo o url: http://mysite.com/referrer/your-name. Se vuoi essere reindirizzato su una pagina specifica, cambia index.php? Referrer = $ corrispondenze [1] di index.php? Pagename = my-page & referrer = $ corrispondenze [1] dove “my-page” è la pagina da reindirizzato alla lumaca.

Recupero del valore variabile

Ora che la tua regola di riscrittura è impostata, potresti voler accedere al valore della variabile. Ma se fai un semplice $ _GET [“referrer”], non otterrai alcun valore. Per recuperare i valori di URL diversi, è necessario collegare una funzione al filtro “template_redirect”. Il collegamento al filtro “init” è troppo presto. Quindi è possibile accedere alle variabili necessarie tramite l’oggetto $ wp_query. Ecco un breve esempio di come farlo:

// Recupera URL var
funzione rc_get_my_vars () {
$ wp_query globale;

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

// Aggancia la funzione in template_redirect
add_action ('template_redirect', 'rc_get_my_vars');

Successivamente puoi ripetere l’eco del valore $ referrer o usarlo come avrebbe fatto con una normale variabile GET.

Puoi ovviamente modificare usare più di una variabile:

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

// in rc_add_rewrite_rules ()
$ new_rules = array ('referrer / ([^ /] +) / ([^ /] +) /? $' => 'index.php? pagename = my-page & referrer = $ corrispondenze [1] e campagna = $ corrispondenze [ 2] ');

Non dimenticare che è necessario abilitare il modulo mod_rewrite di PHP per utilizzare la riscrittura dell’URL.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me