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
相关产品推荐
相关产品推荐

