我的 WordPress 网站有一个投资组合,位于www.mysite.com/portfolio/
. 投资组合部分和项目通过我创建的自定义插件进行管理。我想访问单个项目www.mysite.com/portfolio/my-cool-photo
,并将“my-cool-photo”放入查询字符串中,?portfolio_item=my-cool-photo
这样我就可以从我的代码中读取它。
在插件激活 PHP 文件中,我有以下代码:
function add_rewrite_rules($wp_rewrite) {
$new_rules = array(
'portfolio/(.+)/?$' => 'index.php?&portfolio_item=$1'
);
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'add_rewrite_rules');
function query_vars($public_query_vars) {
$public_query_vars[] = "portfolio_item";
return $public_query_vars;
}
add_filter('query_vars', 'query_vars');
这会将重写规则添加到数组 OK。问题是它什么也没做。当我去时,www.mysite.com/portfolio/testing/
我得到“这有点尴尬,不是吗?” WordPress 404 错误页面。显然重定向不起作用,因此不会填充查询字符串,但只是为了确保我这样做了:
global $wp_query, $wp_rewrite;
if ($wp_rewrite->using_permalinks()) {
$searchKey = $wp_query->query_vars['portfolio_item'];
} else {
$searchKey = $_GET['portfolio_item'];
}
...果然查询字符串没有通过。
有什么我想念的吗?