¿WP tiene una función para generar RewriteCond en .htaccess?
Sé que puedo editar .htaccess manualmente y agregar una declaración RewriteCond dentro, pero necesito construir un plugin que haga esto de la manera correcta usando las reescrituras de WP que luego se insertan en .htaccess con flush_rewrite_rules(). Necesito RewriteCond en este caso.
¿WP tiene alguna función poco conocida que me permita insertar una declaración RewriteCond en el .htaccess?

En resumen, sí...
Reglas de Reescribir 'Externas'
Si en add_rewrite_rule
la regla no está dirigida a index.php
, entonces la regla se trata como una regla 'externa' (es decir, no será procesada por el manejo interno de WordPress de las reescrituras) y en su lugar se escribe en el archivo .htaccess
. Es decir, si:
add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?','somethingelse.php?p=12&food=$1 &variety=$2','top');
se usa en lugar de
add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?','index.php?p=12&food=$matches[1]&variety=$matches[2]','top');
Entonces la regla se reconoce como una regla no (interna) de WordPress y se añade al archivo .htaccess en lugar de manejarse internamente. Nota para reglas 'externas' - usas $1
en lugar de $matches[1]
;
Añadiendo reglas personalizadas a .htaccess
Cuando las reglas de reescritura se actualizan, el archivo .htacess
se sobrescribe. Existe un gancho que filtra lo que realmente se escribe. mod_rewrite_rules
function wpse50631_htaccess( $rules ){
//Añadir o anteponer reglas adicionales.
return $rules;
}
add_filter('mod_rewrite_rules', 'wpse50631_htaccess');
El codex dice lo siguiente:
mod_rewrite_rules()
es la función que toma el arreglo generado por rewrite_rules() y realmente lo convierte en un conjunto de reglas de reescritura para el archivo.htaccess
. Esta función también tiene un filtro,mod_rewrite_rules
, que pasará a las funciones la cadena de todas las reglas que se escribirán en.htaccess
, incluyendo la sección circundante<IfModule>
. (Nota: también puedes ver plugins usando el gancho rewrite_rules, pero esto está obsoleto).

¡Ajá! Lo principal es esa última sección que tienes aquí en vanilla. Aquí es donde puedo editar la cadena que se escribe y aquí es donde puedo agregar RewriteCond.

@Volomike Es prudente tener en cuenta que no todas las instalaciones de WordPress permiten que WordPress modifique directamente el .htaccess, así que no cuentes con poder hacerlo... como mínimo muestra una advertencia y algunas instrucciones para hacerlo manualmente si no se puede hacer programáticamente.
