Правила перезаписи URL-адресов для запроса нескольких таксономий
Я пытаюсь создать несколько красивых URL-адресов для ссылок, запрашивающих несколько таксономий. Я использую плагин "Детализация таксономии", хотя основное использование теперь интегрировано в ядро, в нем все еще есть некоторые полезные функции для создания шаблонов:)
Примером URL-адреса, запрашивающего несколько таксономий (рабочих), может быть: domain.com/?tax1=foo&tax2=bar
Моя цель - иметь такие ссылки, как - domain.com/tax1/foo/tax2/bar - перевод на вышеуказанный пример
Tax1/2 = название таксономии
Foo/bar = требуемый термин
Я наткнулся на Примеры перезаписей WP, но я думаю, что мне не нравятся эти шаблоны и что-то вроде:
$newrules['tax1/(.*)/tax2/(.*)/'] = 'index.php?tax1=$matches[1]&tax2=$matches[2]';
Похоже, не работает (это всего лишь часть всей функции, основанной на примере Wordpress)
Есть идеи?:)
1 answers
(.*)
соответствует всему, поэтому он "съест" лишних персонажей (он "жадный"). Если URL-адрес /tax1/foo/tax2/bar/
, то первый (.*)
будет foo/tax2/bar/
, поэтому для второго совпадения ничего не остается.
Вместо (.*)
вы можете использовать "нежадную" версию (.+?)
. Это будет соответствовать как можно большему, но все же имейте в виду остальное. Вы также можете использовать еще более строгую версию ([^/]+)
: это будет соответствовать всему до следующего /
- но это не будет работать для вложенных категорий, поэтому /category/fruit/banana/tag/flies/
будет не разделен на fruit/banana
и flies
, как вы могли бы ожидать.
Если вы собираетесь играть с правилами перезаписи, я рекомендую вам установить мой плагин анализатора перезаписи. Это позволяет вам видеть текущие правила перезаписи и играть с URL-адресами, чтобы увидеть, какие правила будут соответствовать.