WordPress 自定义模板路径

当需要访问一个路径调用相应的模板时,可以使用下面的方法:

function rt_rewrite_rules( $wp_rewrite ) {
    $rt_rules = [
        'orders(.*)$' => 'index.php?rt_custom_page=orders',
        'users/([^/]*)/collections/?' => 'index.php?rt_custom_page=collections',
        'users/([^/]*)/?' => 'index.php?rt_custom_page=user-center&user_id=$matches[1]',
    ];

    $wp_rewrite->rules = $rt_rules + $wp_rewrite->rules;
}
add_action( 'generate_rewrite_rules', 'rt_rewrite_rules' );


function rt_add_query_vars($public_query_vars) {
    $public_query_vars[] = 'rt_custom_page';
    $public_query_vars[] = 'user_id';
    return $public_query_vars;
}
add_action( 'query_vars', 'rt_add_query_vars' );


function rt_template_redirect() {
    global $wp;
    global $wp_query;
    global $wp_rewrite;

    //查询rt_custom_page变量
    $rt_custom_page =  $wp_query->query_vars['rt_custom_page'];
    switch ($rt_custom_page) {
        case 'orders':
            require_once(TEMPLATEPATH.'/pages/orders.php'); die();
        case 'user-center':
            require_once(TEMPLATEPATH.'/pages/users.php'); die();
        case 'collections':
            require_once(TEMPLATEPATH.'/pages/collections.php'); die();
    }
}
add_action( 'template_redirect', 'rt_template_redirect' );


function rt_flush_rewrite_rules(){
    global $pagenow;
    global $wp_rewrite;

    if( 'theme.php' == $pagenow && isset( $_GET['activated'] )) {
        $wp_rewrite->flush_rules();
    }
}
add_action( 'load-themes.php', 'rt_flush_rewrite_rules' );


// add_action('init', 'add_rt_rules');
// function add_rt_rules(){
//     add_rewrite_rule(
//         'users/collections/?',
//         'index.php?rt_custom_page=collections',
//         'top'
//     );
// }
收藏
评论
打赏
PHP 数组
上一篇
WordPress 用户信息
下一篇

0 条评论

像素鱼丸
77530 阅读
113 发布
3 收藏
动态
MirageV 主题 v2.6.4 发布
Mighty 企业主题 v1.9.0 发布
Mirage 主题 v2.52.0 发布
Mighty 企业主题 v1.10.0 发布
BotV 插件 v1.7.0 发布
FishV 主题 v1.14 发布
LandV 企业主题 v2.6.0 发布
MirageV 主题 v2.6.0 发布
生成中...
真诚赞赏,手留余香
登录
注册
重置密码