Există în WP o funcție pentru generarea RewriteCond în .htaccess?
Știu că pot edita manual .htaccess și pot adăuga o declarație RewriteCond în interior, dar am nevoie să construiesc un plugin care face acest lucru în mod corect prin utilizarea sistemului de rewrite-uri din WordPress, care apoi sunt introduse în .htaccess cu flush_rewrite_rules(). În acest caz, am nevoie de RewriteCond.
Există vreo funcție mai obscură în WordPress care să-mi permită să introduc o declarație RewriteCond în .htaccess?

Pe scurt, da...
Reguli de rescriere 'Externe'
Dacă în add_rewrite_rule
regula nu este direcționată către index.php
, atunci regula este tratată ca o regulă 'externă' (adică nu este procesată de gestionarea internă a WordPress a rescrierilor) și este scrisă în fișierul .htaccess
. Adică, dacă:
add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?','somethingelse.php?p=12&food=$1 &variety=$2','top');
este folosit în loc de
add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?','index.php?p=12&food=$matches[1]&variety=$matches[2]','top');
Atunci regula este recunoscută ca o regulă non (internă) WordPress și este adăugată în fișierul .htaccess în loc să fie gestionată intern. Notă pentru regulile 'externe' - folosiți $1
în loc de $matches[1]
;
Adăugarea de reguli personalizate în .htaccess
Când regulile de rescriere sunt actualizate, fișierul .htaccess
este rescris. Există un hook care filtrează ceea ce este scris efectiv. mod_rewrite_rules
function wpse50631_htaccess( $rules ){
//Adaugă sau prepend reguli suplimentare.
return $rules;
}
add_filter('mod_rewrite_rules', 'wpse50631_htaccess');
Codex-ul spune următoarele:
mod_rewrite_rules()
este funcția care preia array-ul generat de rewrite_rules() și îl transformă într-un set de reguli de rescriere pentru fișierul.htaccess
. Această funcție are și un filtru,mod_rewrite_rules
, care va transmite funcțiilor șirul tuturor regulilor care trebuie scrise în.htaccess
, inclusiv secțiunea<IfModule>
care o înconjoară. (Notă: este posibil să vedeți și plugin-uri care folosesc hook-ul rewrite_rules, dar acesta este depreciat).

Aha! Principalul lucru este acea ultimă secțiune pe care o ai aici în versiunea vanilla. Aici pot edita șirul care este scris și aici pot adăuga RewriteCond.

@Volomike Este indicat să reții că nu fiecare instalare WordPress permite modificarea directă a fișierului .htaccess, așa că nu te baza pe posibilitatea de a... cel puțin aruncă un avertisment și câteva instrucțiuni pentru a face acest lucru manual dacă nu poate fi făcut programatic.
