WordPress拼接URL后wp_redirect失效仅跳转首页问题求助
问题根因
你的代码跳转到首页是因为$authorName变量实际取到了空值:
trashed_post钩子触发时不在前端文章循环上下文内,直接调用get_the_author_meta()不传入指定文章/用户ID时,无法正确获取被删文章的作者信息,最终拼接出的跳转地址只有首页域名部分。- 手动拼接作者页地址的写法兼容性差,一旦站点修改了固定链接规则,地址就会失效。
可用修复代码
替换你原有代码即可:
add_action( 'trashed_post', 'dex_redirect_after_trashing', 10 ); function dex_redirect_after_trashing( $post_id ) { // 读取被删除文章对应的作者ID $author_id = get_post_field( 'post_author', $post_id ); // 调用WordPress原生方法生成作者归档页链接,自动适配固定链接规则 $target_url = get_author_posts_url( $author_id ); wp_redirect( $target_url ); exit; }
注意事项
trashed_post钩子默认会将被移入回收站的文章ID作为参数传入回调,必须在函数定义处声明接收$post_id参数,才能获取到当前操作的文章数据。- 如果你给
get_delete_post_link()传了第3个参数$force_delete = true,也就是删除文章时直接跳过回收站永久删除,需要把挂载的钩子换成deleted_post才能正常触发跳转。
内容的提问来源于stack exchange,提问作者dexter
相关产品推荐
相关产品推荐

