Wordpress自定义URL路由

时间:2016-02-04 19:11:15

标签: php wordpress routing

我要求所有网址末尾都有一个变量,所有网址都解析为同一个控制器/视图

例如,我们有以下网址:

http://example.com/users/joe
http://example.com/users/sam
http://example.com/users/jack

所有三个URL都应该解析为同一个控制器,我会根据用户名应用一些逻辑来呈现每个页面。

如何在Wordpress上实现这种类型的路由?

1 个答案:

答案 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;    

    }