重写分层自定义帖子类型的数字ID参数

时间:2013-01-29 作者:Steve de Niese

我已经有一段时间在这件事上撞到了墙上,但我不太确定从我读到的所有教程中,我如何理解为什么这件事没有达到我预期的效果。

我有一个页面叫做shop-guide/shop-page?id=412 (例如)

我想改变它shop-guide/shop-page/id/412/

据我所知,我的代码设置正确,但当我尝试导航到该页面时,我会得到一个404,如果我使用$\\u get版本,它不会重写。

这是我的密码:(infunctions.php)

function wptuts_add_rewrite_rules() {  
add_rewrite_rule(  
    \'shop-guide/shop-page/id/([^/]*)/\',  
    \'index.php?p=143&id=$matches[1]\',  
    \'top\' 
);  
}  
add_action( \'init\', \'wptuts_add_rewrite_rules\' ); 

2 个回复
SO网友:Milo

两个问题-

您的重写规则格式不正确,这是:

\'shop-guide/shop-page/id/([^/]*)/\'
应为:

\'shop-guide/shop-page/id/([^/]*)/?$\'
如果shop-guideshop-page 是父/子页面,这是:

\'index.php?p=143&id=$matches[1]\'
应为:

\'index.php?pagename=shop-guide/shop-page&id=$matches[1]\'

SO网友:WP Themes

我认为您首先需要注册自定义querystring变量。你可以使用add_rewrite_tag 为此目的:http://codex.wordpress.org/Rewrite_API/add_rewrite_rule

请参见important 在codex文章的底部记下

编辑:

您也可以使用query_vars 钩子添加您自己的自定义查询变量。

结束

相关推荐