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

WordPress表单提交重定向后admin_notices通知不显示如何解决

核心错误点
  • 执行顺序错误:setting_response函数中exit写在了add_action调用之前,注册通知钩子的代码永远不会被执行,程序在重定向后直接终止了运行。
  • 跨请求上下文丢失:即便把add_action移到exit前也无法生效,wp_safe_redirect会发起全新的HTTP请求,当前请求注册的钩子、临时变量都会随PHP进程结束被销毁,新请求加载WordPress时不会保留之前的钩子注册记录。
可直接运行的修复代码

最简便的实现是重定向时携带自定义状态参数,在后台全局钩子中判断参数匹配后输出通知:

// 绑定表单提交处理回调
add_action( 'admin_post_hidden_value_of_form', 'setting_response' );
// 绑定后台通知输出回调
add_action( 'admin_notices', 'setting_updated' );

/**
 * 输出保存成功通知
 */
function setting_updated(){
    // 仅在插件设置页、且检测到成功参数时输出通知
    if ( 
        isset($_GET['page']) 
        && $_GET['page'] === 'plugin-setting-url' 
        && isset($_GET['saved']) 
        && $_GET['saved'] == 1
    ) {
        ?>
        <div class="notice notice-success is-dismissible">
            <p>Saved successfully!</p>
        </div>
        <?php
    }
}

/**
 * 表单提交处理逻辑
 */
function setting_response() {
    // 此处放你的表单数据校验、保存逻辑

    // 重定向到设置页时携带成功标识参数
    wp_safe_redirect( admin_url( 'admin.php?page=plugin-setting-url&saved=1' ) );
    exit;
}

如果需要避免用户手动拼接参数误触发通知,可以用瞬态(Transient)做状态传递,逻辑更严谨:

add_action( 'admin_post_hidden_value_of_form', 'setting_response' );
add_action( 'admin_notices', 'setting_updated' );

function setting_updated(){
    // 检测到成功状态瞬态时输出通知,读取后立刻删除避免重复显示
    if ( get_transient( 'plugin_setting_saved' ) ) {
        delete_transient( 'plugin_setting_saved' );
        ?>
        <div class="notice notice-success is-dismissible">
            <p>Saved successfully!</p>
        </div>
        <?php
    }
}

function setting_response() {
    // 此处放你的表单数据校验、保存逻辑

    // 写入10秒有效期的临时状态
    set_transient( 'plugin_setting_saved', true, 10 );
    wp_safe_redirect( admin_url( 'admin.php?page=plugin-setting-url' ) );
    exit;
}

注意:admin-post.php处理逻辑完成后必须在重定向后调用exit终止程序,这部分你原来的写法是正确的,不要删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 06:46:04