Rewrite Rule для пользовательской страницы с URL-адресами запроса в URL-адресе

Задний план

У меня есть страница, называемая «слушать» с помощью настраиваемого шаблона, который запускает пользовательский wp_query, который использует переменную «show» в URL-адресе. Следующий пример работает …

example.com/listen/?show=thebigshow 

Что я хочу

Я хочу быть в состоянии избавиться от ? Show = часть URL-адреса и отформатировать его следующим образом …

 example.com/listen/thebigshow 

Что я пробовал

Я попытался выполнить следующее правило перезаписи, но безрезультатно.

 function add_query_vars_filter( $vars ){ $vars[] = "show"; return $vars; } add_filter( 'query_vars', 'add_query_vars_filter' ); function listen_rewrite_action() { add_rewrite_tag('%show%','([^/]*)'); add_rewrite_rule( '^listen/([^/]+)$', '/listen/?show=$matches[1]', 'top' ); } add_action( 'init', 'listen_rewrite_action' ); 

Немного больше информации

Правила перезаписи (как показано в плагине) Правила перезаписи (как показано в плагине)

Какой .htaccess выглядит после поколения Какой .htaccess выглядит после поколения

Спасибо, Энди.

Solutions Collecting From Web of "Rewrite Rule для пользовательской страницы с URL-адресами запроса в URL-адресе"

Я вручную удалил файл .htaccess и регенерировал, что вместе с приведенным ниже кодом заставило переписать работу. Второе правило перезаписи в коде ниже делает правильную разбивку на страницы.

Файл .htaccess, похоже, не пишет никаких правил, но переписывание теперь работает.

 function listen_rewrite_action() { add_rewrite_tag('%show%','([^/]*)'); add_rewrite_rule( '^listen/([^/]+)$', 'index.php?pagename=listen&show=$matches[1]', 'top'); add_rewrite_rule( '^listen/([^/]+)/page/([^/]+)$', 'index.php?pagename=listen&show=$matches[1]&paged=$matches[2]', 'top'); } add_action( 'init', 'listen_rewrite_action' );