如何打印出重定向查询字符串的变量?

How to print out the variables of a redirected query string?

我有一个基本的重定向设置:

function example_add_rewrite_rules() {
  $made_year = '(\d{4})?';
  $make = '([a-z]{1,20})';
  $model = '(.+)';
  add_rewrite_rule( 'c/'.$made_year.'/?'.$make.'/'.$model.'/?$', 'index.php?page_id=46&made_year=$matches[1]&make=$matches[2]&model=$matches[3]', 'top' );
}
add_action( 'init', 'example_add_rewrite_rules' );

我希望每当用户使用 URL ../c/2015/ford/f150 访问页面时,URL 就会存储在查询字符串中。

因此,希望用户会看到:“/c/2015/ford/f150”

当我看到这个:“?page_id=46&year=2015&make=ford&model=f150”

不过我不知道它是否有效。如果我输入 /c/2015/ford/f150,它会将我重定向到正确的 page/page_id。但我终究无法弄清楚如何将这些查询变量打印到页面上,所以我至少可以看到查询字符串配置正确并且变量存储在年份、品牌和型号中。

总结:我在上面的代码中做错了什么吗?如果没有,如何将查询字符串变量打印到页面?

旁白:我正在跳入 PHP 的海洋,我仍在努力学习如何游泳。如果我说错了什么,请原谅并纠正我,因为我不知道我在做什么。

要在重写规则中使用您自己的查询变量,您需要将它们添加到已知变量列表中:

function wpd_query_vars( $qvars ) {
  $qvars[] = 'my_year';
  $qvars[] = 'make';
  $qvars[] = 'model';
  return $qvars;
}
add_filter( 'query_vars', 'wpd_query_vars' , 10, 1 );

然后你可以在模板中输出它们的值 get_query_var:

echo get_query_var( 'model' );