Я делаю нечто очень похожее на то, что вы описываете, используя пользовательское правило mod_rewrite. Следуя вашему примеру, у меня есть страница Foo, которая использует шаблон foo.php. Шаблон foo.php принимает переменную запроса, скажем «путь», которая определяет оставшуюся часть URL. В моем файле .htaccess у меня есть следующее правило (будьте осторожны, поместите его вне WordPress 'автоматически сгенерированных правил!):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^foo/(.+) /foo/?path=$1 [L]
</IfModule>
Вашему плагину также может потребоваться отключить плагин "redirect_canonical", который может неожиданно перехватывать ваши URL.
remove_action('template_redirect', 'redirect_canonical');
Я думаю, что возможно сделать что-то подобное, используя template_redirect hook и WP_Rewrite , но я не пробовал сам