我要求所有网址末尾都有一个变量,所有网址都解析为同一个控制器/视图
例如,我们有以下网址:
http://example.com/users/joe
http://example.com/users/sam
http://example.com/users/jack
所有三个URL都应该解析为同一个控制器,我会根据用户名应用一些逻辑来呈现每个页面。
如何在Wordpress上实现这种类型的路由?
答案 0 :(得分:2)
你可以使用重写这个...链接到最后一个函数中的控制器文件,并从那里调用视图。
不要忘记访问固定链接页面并保存(这会刷新重写规则)。
add_action('init', 'anew_rewrite_rule');
function anew_rewrite_rule(){
add_rewrite_rule('^users\\/[a-z]','index.php?is_customusers_page=1','top');
}
add_action('query_vars','controller_set_query_var');
function controller_set_query_var($vars) {
array_push($vars, 'is_customusers_page'); // ref url redirected to in add rewrite rule
return $vars;
}
//we'll call it a template but point to your controller
add_filter('template_include', 'include_controller');
function include_controller($template){
// see above 2 functions..
if(get_query_var('is_customusers_page')){
//path to your template file
$new_template = get_stylesheet_directory().'/controllerpath.php';
if(file_exists($new_template)){
$template = $new_template;
}
}
return $template;
}