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

如何在前端删除自定义文章类型后重定向至首页?

解决自定义文章删除后重定向到首页的问题

你的代码存在两个潜在问题:一是函数名wp_delete_post_link和WordPress内置函数重名,会引发冲突;二是删除链接未指定重定向目标,导致默认跳转路径出错出现404。以下是具体改进方案:

方法一:修改删除链接,直接指定重定向地址

替换你原有的删除链接函数和短代码,加入权限检查和重定向参数:

// 自定义删除链接函数(改名避免和内置函数冲突)
function custom_delete_post_link($link_text = 'Delete Post', $before = '', $after = '') {
    global $post;
    
    // 检查当前用户是否有权限删除该文章
    if (!current_user_can('delete_post', $post->ID)) {
        return;
    }
    
    // 构造带重定向参数的删除链接
    $delete_url = add_query_arg([
        'action' => 'delete',
        'post' => $post->ID,
        'redirect_to' => urlencode(home_url()) // 重定向到首页
    ], admin_url('post.php'));
    
    // 添加安全验证nonce
    $delete_url = wp_nonce_url($delete_url, 'delete-post_' . $post->ID);
    
    echo $before . '<a href="' . esc_url($delete_url) . '">' . esc_html($link_text) . '</a>' . $after;
}

// 短代码函数
function wpc_elementor_delete_shortcode($atts) {
    ob_start();
    custom_delete_post_link();
    return ob_get_clean();
}
add_shortcode('my_delete_shortcode', 'wpc_elementor_delete_shortcode');

关键改进点:

  • 函数改名避免冲突:将wp_delete_post_link改为custom_delete_post_link,防止覆盖WordPress内置函数
  • 添加权限检查:确保只有有权限的用户才能看到删除按钮
  • 用add_query_arg和admin_url构造链接:更规范安全,避免硬编码路径
  • 加入redirect_to参数:指定删除后跳转到首页,用urlencode处理URL编码
  • 短代码用输出缓冲:避免直接echo导致内容位置错误

方法二:用钩子强制重定向(适合所有删除场景)

如果希望不管删除链接怎么生成,只要删除指定自定义文章就跳转到首页,可以添加以下钩子到functions.php:

add_action('admin_action_delete', 'custom_delete_redirect_to_home');
function custom_delete_redirect_to_home() {
    global $post;
    
    // 替换成你的自定义文章类型slug
    if ($post->post_type === 'your_custom_post_type') {
        wp_redirect(home_url());
        exit;
    }
}

注意:

  • 将your_custom_post_type替换为你实际使用的自定义文章类型标识
  • 若只想针对前端删除生效,可额外判断!is_admin(),但需确保删除请求的权限验证逻辑完整

内容的提问来源于stack exchange,提问作者Alex Black

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:15:09