Chi ha creato la discussione
zuccamonna
(@zuccamonna)
Ciao, intanto grazie per la risposta…
per quanto riguarda mod rewrite del file htaccess, sono quelle standard di wordpress quando nella sezione permalink imposti il formato “nome-articolo”.
Per quanto riguarda le regole di riscrittura del wp_rewrite di wordpress, ho provato ad impostare qualcosa ma in maniera inconcludente perchè ottenevo sempre un 404. In pratica, anche dopo aver letto alcuni articoli sul modulo wp_rewrite di WP, non ho una strategia da applicare e non so come muovermi.
Mi servirebbe proprio un suggerimento su come implementare questa
– nuova regola di riscrittura di WP (add_rewrite_rule ?)
– se aggiungere un rewrite_tag relativo /add_rewrite_tag ?)
– se utilizzare un metodo diverso
In questo momento sto barcolando un po’ nel buio…
Salve,
sempre presumento che tu abbia mod_rewrite corettamente attivo, una parte del problema potrebbe essere risolta con
add_action( 'init', 'city_rewrite_rules' );
function city_rewrite_rules()
{
add_rewrite_rule(
// regola regex per pescare la città
'city/([^/]+)/?',
// destinazione reale, ad esempio la pagina città, adatta l'url alle tue necessità
'index.php?pagename=citta&nome_citta=$matches[1]',
// priorità della regola, top o bottom
'top' );
}
Usando il formato
http://www.nomedominio.it/city/cittaX/qualsiasicosa
ti è più facile utilizzare i permalink senza dover rigenerare di volta in volta le regole in base alle città generate. Ovviamente invece di city puoi mettere qualcosa di più generico ma almeno così definisci che quello che sta sotto “city/” segue la tua regola e che la stringa appena dopo è la stringa che ti serve.
Ricorda inoltre che devi dire a WordPress che c’è una nuova variabile da tenere in considerazione, ovvero come da esempio nome_citta e quindi
add_filter( 'query_vars', 'city_query_vars' );
function city_query_vars( $query_vars )
{
$query_vars[] = 'nome_citta';
return $query_vars;
}
Ricordati che se non aggiorni i permalink quando modifichi queste regole (andando sulle impostazioni -> permalink -> salva) non avviene il reflush dei permalink e quindi il sistema non è aggiornato sulle nuove regole da seguire.
Saluti,
Diego
Chi ha creato la discussione
zuccamonna
(@zuccamonna)
Ciao, grazie per la risposta
però mi chiedo una cosa… l’esempio che hai postato è abbastanza generico e non so se può risolvere il mio problema…
I due punti fondamentali sono infatti che:
– la città deve essere letta dal cookie lato utente
– non posso mettere la radice /city/ prima di cittaX perchè tutto il sito sarebbe sotto quella radice…
Io devo poter aggiungere cittaX ad quasi ogni url del sito.
Inoltre, in riferimento alla seconda parte, quella delle query vars, ricordo che le interrogazioni già funzionano perfettamente… l’unico problema è l’url
Sono riuscito ad essere più chiaro?
Direi di si,
per la parte di cookie puoi pescare dal cookie con una regola come la seguente (da adattare)
RewriteCond %{HTTP_COOKIE} ^.*citta=([^;]+)
RewriteCond %{REQUEST_URI} !^%1
RewriteRule (.*) /%1/$1 [R=301,L]
ovvero
– se c’è il cookie citta (e lo salvo in %1 )
– e la condizione è che la uri non inizia con quella città
– redirigi su /nomecitta/resto dei parametri con 301 e termina l’elaborazione delle regole
Tieni presente che probabilmente devi evitare dei self loop ma devi fare dei test con la seconda condizione ed essere sicuro che wordpress possa gestire quel indirizzo (un 404 potrebbe innescare un redirect loop se non è definito un documento/uri per gli errori).
Per la seconda parte invece puoi modificare la regola del add_rewrite_rule cambiando la regex e levando la parte radice e mettendo bottom in modo che viene eseguita se non ci sono regole precedenti su altri contenuti.
Spero questi spunti possano esserti d’aiuto, sicuramente ci sono test e adattamenti da fare.
Prova con file statici se le regole funzionano (crea una struttura di cartelle e file che dovrebbero funzionare e gioca un po’ con le regole, evitando condizioni 404).
Quando questo funziona prova con wordpress a fargli intercettare come detto le regole e visualizzare la pagina corretta.
Saluti,
Diego
Chi ha creato la discussione
zuccamonna
(@zuccamonna)
Grazie, questo tuo suggerimento è molto importante… adesso mi metterò a fare delle prove per capire come implementare tutto.
Grazie mille!!