如何在php文件(如single.php)中使用来自重写规则的捕获?

时间:2017-12-16 作者:kater louis

我的重写规则,为深入链接到播客创建一个方便的url

add_filter("rewrite_rules_array", function($rules) {

    $newRules = array();

    $newRules["(.*)/time/([\\d|\\:]+)s?$"] = \'index.php?name=$matches[1]&t=$matches[2]\'; 

    $merged = array_merge($newRules, $rules);

    return $merged;

});
查询监视器向我显示此重写规则正在工作;我开始单身了。php与正确的帖子,Woop Woop!

但是$_GET["t"] 未设置。我也没有看到t 在里面$wp_query->query_vars. 我现在如何利用t 内部single.php?

让我困惑的是:我的重写规则/email 类似工程;但是email.php 可以使用get vars;

add_rewrite_rule(
    \'^email/(.*)/(.*)/?$\',
    \'wp-content/themes/myTheme/email.php?to=$1&subject=$2\',
    \'top\'
); 

1 个回复
最合适的回答,由SO网友:kater louis 整理而成

尼古拉的小费让我走上了正确的道路;以下是工作代码:

// add a query_var first
add_filter("query_vars", function($vars) {
    $vars[] = "myTheme_podcast_time";
    return $vars;   
});

add_filter("rewrite_rules_array", function($rules) {

    $newRules = array();
    $newRules["(.*)/time/([\\d|\\:]+)s?$"] = \'index.php?name=$matches[1]&myTheme_podcast_time=$matches[2]\'; 

    $merged = array_merge($newRules, $rules);
    return $merged;

});
然后进来single.php:

$time = get_query_var("myTheme_podcast_time");

// do stuff

结束