You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress发布/存草稿后重定向至后台文章页,预览功能失效求助

解决WordPress发布/保存后重定向与预览冲突问题

你的代码问题出在save_post钩子的触发场景太广——这个钩子会在文章预览、自动保存、修订版本创建时都执行,所以预览操作也被强制跳转到了文章列表页。只需添加几个判断条件,就能让重定向只在你需要的场景生效:

修改后的代码如下:

// 发布/保存后重定向到对应列表页
add_action('save_post', 'custom_post_save_redirect', 10, 3);
function custom_post_save_redirect($post_id, $post, $update) {
    // 排除自动保存、修订版本、预览请求
    if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id) || isset($_GET['preview'])) {
        return;
    }

    // 排除REST API请求,避免后台AJAX操作被干扰
    if (defined('REST_REQUEST') && REST_REQUEST) {
        return;
    }

    $post_type = get_post_type($post_id);
    $redirect_url = '';

    switch ($post_type) {
        case 'post':
            $redirect_url = admin_url('edit.php?msg=post');
            break;
        case 'product':
            $redirect_url = admin_url('edit.php?post_type=product&msg=page');
            break;
        case 'page':
            $redirect_url = admin_url('edit.php?post_type=page&msg=page');
            break;
        default:
            return;
    }

    if (!empty($redirect_url)) {
        wp_redirect($redirect_url);
        exit;
    }
}

关键判断说明:

  • wp_is_post_autosave($post_id):跳过后台编辑时的自动保存操作
  • wp_is_post_revision($post_id):跳过修订版本的创建操作
  • isset($_GET['preview']):直接识别预览请求,遇到预览就不执行重定向
  • REST_REQUEST判断:避免后台的AJAX或REST接口操作被意外重定向

修改后,只有手动点击发布、更新、保存草稿、提交审核这些操作时,才会跳转到对应文章列表页,预览功能可以正常使用。

内容的提问来源于stack exchange,提问作者Engr IBM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:36:05