修改WordPress重定向代码,实现登录作者跳转至自身最新文章
WordPress 自定义重定向页面模板改造方案
直接上改造后的完整代码,你可以替换原有的模板代码:
<?php /* Template Name: Redirect */ // 检查用户是否登录 if (is_user_logged_in()) { // 获取当前登录用户ID $current_user_id = get_current_user_id(); // 查询当前用户创建的最新「case」自定义文章 $args = array( 'posts_per_page' => 1, 'post_type' => 'case', 'author' => $current_user_id, 'post_status' => 'publish', // 只查询已发布的文章,可根据需求调整为draft等 'orderby' => 'date', 'order' => 'DESC' ); $user_posts = get_posts($args); if ($user_posts) { // 获取文章链接并追加?mode=edit参数 $post_url = get_permalink($user_posts[0]->ID) . '?mode=edit'; // 302临时重定向,若需永久重定向可改为301 wp_redirect($post_url, 302); exit; } else { // 用户已登录但无自己的case文章,跳转到错误页面 wp_redirect('https://domain.com/error', 302); exit; } } else { // 未登录用户直接跳错误页面 wp_redirect('https://domain.com/error', 302); exit; } ?>
关键代码说明
- 用户登录判断:用
is_user_logged_in()函数快速识别访问者是否已登录WordPress后台 - 用户专属文章查询:在
$args数组中添加'author' => $current_user_id,确保只查询当前登录用户创建的文章;orderby和order参数保证拿到最新发布的文章 - URL参数追加:直接在文章链接后拼接
?mode=edit,简单实现参数追加需求 - 重定向处理:统一使用
wp_redirect()函数,第二个参数设为302临时重定向(若确定跳转规则长期不变,可改为301永久重定向);每次重定向后必须加exit终止后续代码执行,避免出现WordPress的额外输出
使用注意事项
- 把代码中的
https://domain.com/error替换成你实际的错误页面URL - 若需要包含草稿状态的文章,可把
'post_status' => 'publish'改为'post_status' => array('publish', 'draft') - 保存代码为
page-redirect.php(或保持原模板文件名),上传到当前主题的根目录,然后在WordPress后台创建页面时选择「Redirect」模板即可
内容的提问来源于stack exchange,提问作者Sean Bagheri
相关产品推荐
相关产品推荐

