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语言参考
PHP 数组
2024-05-10
WordPress 主题开发
WordPress 用户信息
2024-05-17
飞翔的鱼丸
35883 阅读
82 发布
2 收藏
动态
FishV 主题 v1.14 发布
MirageV 主题 v2.5 正式发布
LandV 企业主题 v2.6.0 发布
MirageV 主题 v2.6.4 发布
BotV 插件 v1.7.0 发布
MirageV 主题 v2.6.0 发布
MirageV-App 小程序 v1.2.2 发布
LandV-App 企业官网小程序 v1.1.0 发布
生成中...
真诚赞赏,手留余香
登录
注册
重置密码