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 用户信息
下一篇
像素鱼丸
47202 阅读
87 发布
3 收藏
动态
MirageV 主题 2.14.0 发布
MirageV 主题 2.16.2 发布
MirageV 主题 v2.6.4 发布
FishV 主题 v1.14 发布
LandV 企业主题 v2.6.0 发布
BotV 插件 v1.7.0 发布
MirageV 主题 v2.5 正式发布
FishV 主题 v1.21.0 发布
生成中...
真诚赞赏,手留余香
登录
注册
重置密码