Wordpress add_rewrite_rule,add_rewrite_tag,空查询变量

时间:2014-08-05 16:56:26

标签: php wordpress mod-rewrite url-rewriting

我在WordPress中遇到重写规则的问题。 我想要的是这样的网址:

     example.com/postname/mini/minipostname

例如:

     example.com/destiny/mini/new-tests

当我使用这样的东西时:

     example.com/destiny/?mini=new-tests

它运作正常。 我搜索了很多网站,论坛,博客和其他人,以找到如何做到这一点。最后我得到了这段代码:

function custom_rewrite_rule() {
    add_rewrite_tag('%minipost%', '([^/]*)');
    add_rewrite_rule('^([^/]*)/mini/([^/]*)/?$','index.php?postname=$matches[1]&minipost=$matches[2]','top');
}
add_action('init', 'custom_rewrite_rule');
add_action( 'wp_loaded','my_flush_rules' );

    // flush_rules() if our rules are not yet included
function my_flush_rules(){
  $rules = get_option( 'rewrite_rules' );

  if ( ! isset( $rules['^([^/]*)/mini/([^/]*)/?$'] ) ) {
        global $wp_rewrite;
        $wp_rewrite->flush_rules();
  }
}

似乎重写规则和重写标记是正确添加的,因为当我使用以下代码打印列表重写标记并重写规则时

function getRewriteRules() {
    global $wp_rewrite; // Global WP_Rewrite class object
    return $wp_rewrite->rewrite_rules();
}
function getRewriteTags() {
    global $wp_rewrite; // Global WP_Rewrite class object
    return $wp_rewrite->rewritecode ;
}

我知道重写规则:http://wklej.to/ffTRo/text

这适用于重写标签:http://wklej.to/W6DOe/text

另外,当我输入这样的链接时:

    example.com/destiny/mini/new-tests

似乎我的重写规则捕获了这个url,因为它显示了我的默认页面(不是/ destiny /这就是我想要的)..当我输入这样的内容时:

    example.com/destiny/not-mini/new-tests

我收到404错误:找不到网页。

所以问题是我没有得到帖子内容“命运”只有默认页面的内容。 在我看来,变量是空的,或者它可能是其他的东西..

我希望我已经合理地描述了我的问题。

感谢advence。

编辑:

我在代码中发现了一个错误。我曾经将变量“postname”命名为“name”,当我将其更改为“name”时,一切都开始起作用了。

抱歉麻烦。

0 个答案:

没有答案