URL中包含查询变量的自定义页面重写规则

时间:2015-10-28 作者:Andy Cheeseman

我有一个名为“listen”的页面,其中有一个自定义模板,它运行一个自定义的wp\\u查询,该查询使用URL中的“show”变量。以下示例有效。。。

example.com/listen/?show=thebigshow
我想要什么?我想摆脱?显示url的一部分,并按如下格式设置其格式。。。

example.com/listen/thebigshow
我尝试了以下重写规则,但没有成功。

function add_query_vars_filter( $vars ){
  $vars[] = "show";
  return $vars;
}
add_filter( \'query_vars\', \'add_query_vars_filter\' );

function listen_rewrite_action() {
  add_rewrite_tag(\'%show%\',\'([^/]*)\');
  add_rewrite_rule(
    \'^listen/([^/]+)$\',
    \'/listen/?show=$matches[1]\',
    \'top\'
  );

}
add_action( \'init\', \'listen_rewrite_action\' );
更多信息

重写规则(在插件中预览)Rewrite Rules (as previewed in a plugin)

什么htaccess在生成后看起来像What .htaccess looks like after generation

谢谢,安迪。

1 个回复
SO网友:Andy Cheeseman

我手动删除了。htaccess文件并重新生成,这与下面的代码一起完成了重写。下面代码中的第二条重写规则可以使分页正常工作。

这个虽然htaccess文件似乎没有使用任何规则编写,但无论如何,重写现在已经开始工作了。

function listen_rewrite_action() {
  add_rewrite_tag(\'%show%\',\'([^/]*)\');
  add_rewrite_rule(
    \'^listen/([^/]+)$\',
    \'index.php?pagename=listen&show=$matches[1]\',
    \'top\');
  add_rewrite_rule(
    \'^listen/([^/]+)/page/([^/]+)$\',
    \'index.php?pagename=listen&show=$matches[1]&paged=$matches[2]\',
    \'top\');
}
add_action( \'init\', \'listen_rewrite_action\' );

相关推荐