我的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'];
}
...确定查询字符串没有通过。
我有什么遗失的吗?
答案 0 :(得分:3)
更新WordPress重写规则后,需要刷新它们:
http://codex.wordpress.org/Function_Reference/flush_rewrite_rules
您可以选择使用$hard
参数true
进行刷新,然后您应该能够在.htaccess文件中看到重写规则。
答案 1 :(得分:0)
以下是重写网址代码的示例。希望这将有助于用户。
在此http://www.domainname.com/test-page?urltags=ABCD之类的网址中,http://www.domainname.com/test-page/ABCD
运行<?php
function add_my_rule() {
global $wp;
$wp->add_query_var('tags');
add_rewrite_rule('test-page/([^/]*)','index.php?pagename=test-page&urltags=$matches[1]','top');
}
function add_my_tags() {
add_rewrite_tag('%urltags%', '([^&]+)');
}
add_action('init', 'add_my_rule');
add_action('init', 'add_my_tags', 10, 0);
?>