logo
09.10.2019 22:36
1
Tak dělám na projektu a mám hotový rewrite rules, ALE problém je s tím, že potřebuji sub virtual page. Uvedu příklad.

- domena.cz/cs/autor/jmeno-autora/ (jmeno-autora je ten rewrite rule, to funguje)
- domena.cz/cs/autor/jmeno-autora/clanky/ (tohle mi tak funguje, ale když to mám zapnutý, nefunguje mi první bod ... tj. bez /clanky/ to hází 404)

Kód 1:
Kód:
$wp_rewrite->add_rule('([^/]+)/autor/([^/]+)','index.php?pagename=autor&autorname=$matches[2]','top');
Kód 2:
Kód:
$wp_rewrite->add_rule('([^/]+)/autor/([^/]+)/([^/]+)','index.php?pagename=autor&autorname=$matches[2]&vypis=$matches[3]','top');
Otázka je, jak to má být správně. A jak rozjet bod 2 i 1 současně. Pointa je, že na /jazyk/autor/jmeno-autora/ je profil a /jazyk/autor/jmeno-autora/clanky/ je výpis.

Jinak oba zápisy fungují samy o sobě. Ale když aktivuji druhej (tj. výpis), tak se nedostanu na profil.

---------- Příspěvek doplněn 09.10.2019 v 22:58 ----------

Vyřešeno takhle:

Kód:
$wp_rewrite->add_rule('([^/]+)/autor/([^/]+)','index.php?pagename=autor&autorname=$matches[2]','top');

$wp_rewrite->add_rule('([^/]+)/autor/([^/]+)/(vypis)/?','index.php?pagename=autor&autorname=$matches[2]&podstranka=$matches[3]','top');
Nevím, jak moc to je správně, ale funguje.

Co se právě děje na Webtrhu?

10.10.2019 07:45
2
kdybych upravoval htaccess, dal bych nejprve autora a pak článku, u autora bych uvedl flag L jako last. V regulárech bych chytl i zacatek a konec url (znaky ^ $), takhle to totiž může matchovat i někde uprostřed url (pokud to tam wp sám nedoplňuje).

Tyhle funkce od WP neznám, podle manuálu lze ukázat co to generuje, print_r($wp_rewrite->mod_rewrite_rules());, můžeš to sem hodit? Třeba tam bude vidět chyba. Z jejich zdrojáků nejsem nadšený, ale podle všeho tam flag L dávají, viz https://core.trac.wordpress.org/brow...rite.php#L1540, takže by mělo stačit je použít ve správném pořadí, nejprve autor a poté články, což jsi podle vše nakonec udělat.