Come posso riscrivere un URL 'page' basato su parametri di query string?

16 ago 2012, 07:27:09
Visualizzazioni: 16K
Voti: 1

Ho la seguente pagina che contiene un singolo post e una serie di commenti:

http://mysite.com/tips

Quando un utente pubblica un commento, aggiungo dei meta-dati per poter filtrare i commenti usando questi URL:
http://mysite/tips?id=cat&filter_id=1
http://mysite/tips?id=dog&filter_id=2

Vorrei invece usare i seguenti URL:
http://mysite/tips/cat
http://mysite/tips/dog

La pagina tips mostra una lista di post basati sui parametri della query string.

Ho seguito questo tutorial, che sembrava fare al caso mio, ma quando digito il mio URL, ottengo un errore di pagina non trovata. http://thereforei.am/2011/10/28/advanced-taxonomy-queries-with-pretty-urls/

È possibile farlo?

0
Tutte le risposte alla domanda 3
0

Puoi aggiungere una regola di riscrittura come la seguente. Assicurati di registrare le tue variabili di query pubbliche con WordPress in modo che riconosca le variabili della tua regola di riscrittura.

add_rewrite_rule('^(tips)/([^/]*)/([^/]*)/?', 'index.php?name=$matches[1]&id=$matches[2]&filter_id=$matches[3]','top');

add_filter('query_vars', 'foo_my_query_vars');
function foo_my_query_vars($vars){
    $vars[] = 'id';
    $vars[] = 'filter_id';
    return $vars;
}

Visita la pagina delle impostazioni dei Permalink per rigenerare i tuoi permalink.

Puoi accedere alle tue variabili nel seguente modo:

$id = get_query_var('id');
$filter_id = get_query_var('filter_id');

Nota, stai cercando di avere due variabili dinamiche con un singolo segmento URI, il che non funzionerà affatto. La regola di riscrittura sopra funziona per tips/cat/1 (dove 1 è il filter_id).

Per testare le tue regole, ti consiglio vivamente di utilizzare il Monkeyman Rewrite Analyzer.

Spero che questo ti sia d'aiuto!

17 ago 2012 07:21:22
0

Puoi utilizzare la funzione add_query_arg:

add_query_arg('filter_id', 1);
add_query_arg('filter_id', 2);

Ora gli URL appariranno così:

http://mysite/tips/cat?filter_id=1

http://mysite/tips/dog?filter_id=2

Puoi ottenere i valori degli argomenti nel seguente modo:

$id = get_query_var('id');
$filter_id = get_query_var('filter_id');

Ecco ulteriori informazioni su add_query_arg

8 mag 2013 11:26:10
0
-1

Penso che tu voglia cambiare lo stile dei Permalink. Puoi modificare i Permalink del tuo sito web attraverso il pannello di amministrazione di WordPress. Vai su WordPress e poi nel menu laterale vai su Impostazioni, dove vedrai un sottomenu chiamato Permalink. Cliccandolo, vedrai diversi tipi di Permalink forniti da WordPress. Puoi anche creare un Permalink personalizzato. Dai un'occhiata all'immagine, spero possa esserti utile:

Impostazioni dei Permalink

16 ago 2012 08:10:20