Many Rewrite Parameters/Rules

时间:2015-10-10 作者:Joshua Wieczorek

我有一个圣经页面,page\\u id为135,我正在尝试创建多个WordPress重写规则。我正在尝试获取以下内容之一:

我想通过WordPress的get\\u query\\u var()函数访问查询参数。但是,所有参数似乎都保存在get\\u query\\u var(“version”)中。它们不会分成3个不同的参数。它将“nasb/Genesis/1”放入version参数中。

我希望能够访问如下参数:

获取查询变量(“版本”)

  • 获取查询变量(“书籍”)
  • 获取查询变量(“章节”)
    • 这是我的代码:

      add_action( \'init\' , function() {
      
      add_rewrite_tag(\'%version%\',\'([^&]+)\');
      add_rewrite_tag(\'%book%\',\'([^&]+)\');
      add_rewrite_tag(\'%chapter%\',\'([^&]+)\');
      
      add_rewrite_rule(
          \'^bible/(.+)/?$\',
          \'index.php?page_id=135&version=$matches[1]\',
          \'top\'
      );
      
      add_rewrite_rule(
          \'^bible/(.+)/(.+)/?$\',
          \'index.php?page_id=135&version=$matches[1]&book=$matches[2]\',
          \'top\'
      );
      
      add_rewrite_rule(
          \'^bible/(.+)/(.+)/(.+)/?$\',
          \'index.php?page_id=135&version=$matches[1]&book=$matches[2]&chapter=$matches[3]\',
          \'top\'
      );  
      
      flush_rewrite_rules();
      
      } );
      
      谢谢你。

      P、 S。

      我目前将我的永久链接设置为post name,以清理url,因此这不是问题。

    2 个回复
    最合适的回答,由SO网友:Milo 整理而成

    模式(.+) 匹配任何字符,包括斜杠,因此任何参数组合都将始终匹配第一条规则,后面的任何内容都将作为版本查询变量传递(.+)([^/]+) 匹配除斜杠以外的所有字符。

    SO网友:TheDeadMedic

    您不需要重写标记-这些标记只对定义永久链接结构有用。相反,要遵守规则add the parameters as query vars:

    function wpse_205120_query_vars( $qvars ) {
        $qvars[] = \'version\';
        $qvars[] = \'chapter\';
        $qvars[] = \'bible\';
        return $qvars;
    }
    
    add_filter( \'query_vars\', \'wpse_205120_query_vars_query_vars\' );
    
    您还需要to get rid of that flush_rewrite_rules() 一旦一切正常。

    相关推荐

    Relative URLs within site

    我想链接到网站内的页面,因此我想链接到的url如下:http://www.example.org/about-us/team当我设置这样的链接时:<a href=\"about-us/team\">Our Team</a> 它不起作用。我到达现场:http://about-us/team有解决办法吗?原因是,网站建成后,它将在另一个域下联机。顺致敬意,