add_rewrite_rule: $ matches var не заменяется захваченным значением

Я хочу получить доступ к файлу плагина (при нажатии <a> ), не подвергая действительный путь к файлу. Я использую следующее правило перезаписи:

 add_rewrite_rule( 'continue/([0-9]+)/?$', 'wp-content/plugins/my-plugin/continue.php?where=$matches[1]', 'top' ); 

Запрос перенаправляется на continue.php но я всегда получаю $_GET['where']=$matches[1] вместо $_GET['where']=123 внутри continue.php. Его нужно было заменить некоторым числом.

Я хочу что-то подобное этому

Обновить

Я попробовал Monkeyman Rewrite Analyzer, но мое правило не появляется в нем. Тогда почему меня перенаправляют на правильную страницу?

например, для continue/2 он имеет следующий выход:

(.+?)(/[0-9]+)?/?$ pagename: continue page: /2

Solutions Collecting From Web of "add_rewrite_rule: $ matches var не заменяется захваченным значением"

Это правило перезаписи не будет работать вообще, покраснело или нет.

В WordPress существует два типа правил перезаписи. Те, у кого есть свои переписывающие URL, начинаются с index.php, а те, которые этого не делают.

Все внутренние правила перезаписи WordPress должны начинаться с index.php. Он не может перенаправляться ни в какое другое место, поскольку он уже перенаправлен в файл index.php к моменту, когда функции WordPress обрабатывают набор правил. Поэтому правила non-index.php должны напрямую попадать в .htaccess, чтобы их можно было перенаправить в другое место, кроме index.php.

  • Те, которые начинаются с index.php, будут обрабатываться внутри самого WordPress, а синтаксис $ matches [1] будет правильным для использования в этом случае.

  • Те, которые не начинаются с index.php, вместо этого будут записаны в файл .htaccess как прямой RewriteRules. Синтаксис $ matches [1] не имеет смысла в этом случае.

Если вы посмотрите в свой .htaccess файл после использования вашего правила, вы найдете следующее:

 RewriteRule continue/([0-9]+)/?$ wp-content/plugins/my-plugin/continue.php?where=$matches[1] 

Который, очевидно, не сработает.

Вместо этого попробуйте сделать код следующим:

 add_rewrite_rule( 'continue/([0-9]+)/?$', 'wp-content/plugins/my-plugin/continue.php?where=$1'); 

Обратите внимание на замену $ 1 вместо этого? Это будет корректно работать при преобразовании в обычный RewriteRule.