2016-08-19 3 views
-1

У меня возникли проблемы с попыткой узнать, как написать этот URL-адрес в шаблон регулярного выражения, чтобы добавить его в качестве перезаписи. Я пробовал различные песочницы regex, чтобы понять это самостоятельно, но они не позволят «/», например, когда я копирую выражение отсюда для тестирования: demoURL rewrite regex conversion

У меня есть пользовательский тип сообщения (публикации) с 2 таксономиями (журнал, выпуск), которые я пытаюсь создать для хорошего URL.

После многих часов я пришел сюда, чтобы узнать, как я могу это преобразовать.

index.php?post_type=publications&magazine=test-mag&issue=2016-aug 

К шаблонному регулярному выражению (публикации, журнала и вопрос является постоянным), которые могут выдавать.

http://example.com/publications/test-mag/2016-aug/ 

Надеемся, что комната будет расширяться, если с этой страницы будет следовать статья.

Заранее спасибо.

EDIT 1:

Я получил это для моего правила:

^publications/([^/]*)/([^/]*)/?$ 

и это для моего матча:

^index.php?post_type=publications&magazine=$matches[1]&issue=$matches[2]$ 

и тестирование с этим:

http://localhost/publications/test-mag/2016-aug/ 

, но это дает мне 404. В чем проблема?

+0

Какой URL-адрес Вы перейдете двигатель? – 10100111001

+0

@ 10100111001 Wordpress rewrite – 4t0m1c

ответ

1

^index\.php\?post_type=publications&magazine=([^&]+)&issue=([^&]+)$

  • ^ начало строки
  • index\.php\?post_type=publications&magazine= дословный текст
  • ([^&]+) один или более не амперсанд символов (получите весь текст вплоть до следующего параметра URL. Это захватывается в качестве группы
  • &issue= литеральный текст
  • ([^&]+) один или несколько неамперных и персонажей. также захватили
  • $ конец строки
+0

Большое спасибо и сделайте это ** ([^ &] +) **, действуя как разновидность переменной для матча, а? – 4t0m1c

+0

Они этого не делают. Они просто делают это так, чтобы вы получили эти строки отдельно в своем коде. – Whothehellisthat

+0

И как я могу вернуть эти строки в переписывание?Извините, я полностью новичок в регулярном выражении – 4t0m1c

1
$str = 'index.php?post_type=publications&magazine=test-mag&issue=2016-aug'; 
preg_match('/magazine=([\w-]+?)&issue=([\w-]+)/', $str, $matches); 
$res = 'http://example.com/' . $matches[1] . '/' . $matches[2] . '/'; 
echo $res; // => http://example.com/test-mag/2016-aug/ 
1

Вы можете использовать метод add_rewrite_rule в WP Rewrite API для достижения этой цели.

add_rewrite_rule('^/([^/]*)/([^/]*)/?$','index.php?post_type=publications&magazine=$matches[1]&issue=$matches[2]','top');