Правила перезаписи 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)

Есть идеи?:)

Author: netfreak, 2011-05-19

1 answers

(.*) соответствует всему, поэтому он "съест" лишних персонажей (он "жадный"). Если URL-адрес /tax1/foo/tax2/bar/, то первый (.*) будет foo/tax2/bar/, поэтому для второго совпадения ничего не остается.

Вместо (.*) вы можете использовать "нежадную" версию (.+?). Это будет соответствовать как можно большему, но все же имейте в виду остальное. Вы также можете использовать еще более строгую версию ([^/]+): это будет соответствовать всему до следующего / - но это не будет работать для вложенных категорий, поэтому /category/fruit/banana/tag/flies/ будет не разделен на fruit/banana и flies, как вы могли бы ожидать.

Если вы собираетесь играть с правилами перезаписи, я рекомендую вам установить мой плагин анализатора перезаписи. Это позволяет вам видеть текущие правила перезаписи и играть с URL-адресами, чтобы увидеть, какие правила будут соответствовать.

 5
Author: Jan Fabry, 2017-04-13 12:37:50