WP dispone di una funzione per generare RewriteCond in .htaccess?
So che posso modificare manualmente .htaccess e aggiungere un'istruzione RewriteCond all'interno, ma ho bisogno di creare un plugin che faccia questo nel modo corretto utilizzando le rewrite di WP che poi vengono inserite in .htaccess con flush_rewrite_rules(). In questo caso ho bisogno di RewriteCond.
WP ha qualche funzione poco conosciuta che mi permette di inserire un'istruzione RewriteCond in .htaccess?

In breve, sì...
Regole di Rewrite 'Esterne'
Se in add_rewrite_rule
la regola non è diretta a index.php
, allora la regola viene trattata come una regola 'esterna' (cioè non da elaborare con la gestione interna dei rewrite di WordPress) e invece viene scritta nel file .htaccess
. Ad esempio, se:
add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?','somethingelse.php?p=12&food=$1 &variety=$2','top');
viene utilizzata invece di
add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?','index.php?p=12&food=$matches[1]&variety=$matches[2]','top');
Allora la regola viene riconosciuta come una regola non (interna) di WordPress e viene aggiunta al file .htaccess invece che essere gestita internamente. Nota per le regole 'esterne' - si usa $1
invece di $matches[1]
;
Aggiungere regole personalizzate a .htaccess
Quando le regole di rewrite vengono svuotate, il file .htacess
viene scritto. C'è un hook che filtra ciò che viene effettivamente scritto. mod_rewrite_rules
function wpse50631_htaccess( $rules ){
//Aggiungere o anteporre regole extra.
return $rules;
}
add_filter('mod_rewrite_rules', 'wpse50631_htaccess');
Il codex dice questo:
mod_rewrite_rules()
è la funzione che prende l'array generato da rewrite_rules() e lo trasforma effettivamente in un insieme di regole di rewrite per il file.htaccess
. Questa funzione ha anche un filtro,mod_rewrite_rules
, che passerà alle funzioni la stringa di tutte le regole da scrivere in.htaccess
, inclusa la sezione circostante<IfModule>
. (Nota: potresti anche vedere plugin che usano l'hook rewrite_rules, ma è deprecato).

Aha! L'aspetto principale è quella sezione finale che hai qui in vanilla. È qui che posso modificare la stringa che viene scritta ed è qui che posso aggiungere RewriteCond.

@Volomike È saggio notare che non ogni installazione di WordPress permette a WordPress di modificare direttamente il file .htaccess, quindi non contare di poterlo fare... come minimo mostra un avviso e alcune istruzioni per farlo manualmente se non può essere fatto in modo programmatico.
