Php Wordpress使用捕获重写规则

Php Wordpress使用捕获重写规则,php,regex,wordpress,Php,Regex,Wordpress,我正在尝试为d3可视化创建一个重写规则,我将把它保存在我的主题文件夹中。最终我想要 d3/[some-year]/[some-string] 重定向到 wp-content/themes/my-theme/d3-library/[some-year]/[some-string]/index.html 但是,我无法使捕获规则正常工作。以下是我目前掌握的情况: function d3_rewrite() { add_rewrite_rule(

我正在尝试为d3可视化创建一个重写规则,我将把它保存在我的主题文件夹中。最终我想要

    d3/[some-year]/[some-string]
重定向到

    wp-content/themes/my-theme/d3-library/[some-year]/[some-string]/index.html
但是,我无法使捕获规则正常工作。以下是我目前掌握的情况:

    function d3_rewrite() {
        add_rewrite_rule(
            'wp-content/themes/d3/(20[0-9][0-9]/.*)',
            'wp-content/themes/my-theme/assets/d3-library/$match[1]/index.html',
            'top'
        );
    }
    add_action('init', 'd3_rewrite');

有人知道为什么这不起作用吗?

如果你有
$match[1]
,那不应该是
$matches[1]

使用
wp content/themes/my theme/assets/d3 library/$1/index.html
。问题出在替换回参考中

matches
不起作用,所以我也尝试了
match
,因为我在PHP正则表达式教程中看到了它。所以它应该是匹配的,但这并不能解决问题。。。也不知道它是否相关,但您的示例将其替换为
d3/[some year]/[some string]
,但规则正在寻找
wp content/themes/d3/[some year]/[some string]
,除非我误解了您,否则这不是重写规则的目的吗?这样用户就可以输入类似于
blah.com/d3/2015/graph
的东西,并被重定向到类似于
blah.com/wp-content/themes/d3-library/2015/graph/index.html
的难看的东西,而根本不需要看到难看的url。是的,但是您编写的重写规则要求他们输入
wp-content/themes/…
您可能希望regexp参数是
'd3/(20[0-9][0-9]/.*)
而不是
'wp-content/themes/d3/(20[0-9][0-9]/.*)
哦,我明白您的意思了。我在文章中不清楚——这是我的最终目标,但我从我提供的代码开始,因为它大大简化了由捕获以外的其他原因导致错误的可能性。不管怎样,@stribizzez的评论解决了这个问题!你试过
“wp-content/themes/my-theme/assets/d3-library/$1/index.html”吗?
?效果不错!非常感谢。如果你想把它作为一个答案发布,我会投票给你,把它标记为已解决。快乐编程!