我在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”时,一切都开始起作用了。
抱歉麻烦。