【问题标题】:Redirect in my custom plugin page in Wordpress在我的 Wordpress 自定义插件页面中重定向
【发布时间】:2012-10-02 09:15:59
【问题描述】:

案例:我在页面中有一个表单,它允许用户在一个简单的文本文件中添加某些值。现在我想在成功添加值后重定向到同一页面。

读/写代码都很好用,我什至放了重定向代码,但这会显示header information is already sent的警告。

我尝试过的标题:

header("Location: some_url_here_in_same_site");
wp_redirect("some_url_here_in_same_site");

我的表单代码:

if(isset($_POST['txtName'])}

    // form validation code here
    if(successful)
        wp_redirect("some_url_here_in_same_site");

}

问题:

  • 如何在插件中提交表单后在 wordpress 中进行重定向?
  • ob_start 不起作用,所以也不要建议我这样做

【问题讨论】:

  • cargo-cult 编程警告:"$custom_url".
  • @MarcB:不要告诉我变量问题,其他一切都在工作,只是在我的标头执行之前已经发送了标头。在这方面的任何帮助都将受到高度赞赏

标签: php redirect wordpress


【解决方案1】:

好的,我设法使用 Hooks 做到了。我使用下面的代码进行了重定向。请注意,表单操作设置为admin-post.php

<form action="admin-post.php" name="frmHardware" id="frmHardware" method="post">
    <!-- form elements -->
    <!-- Essential field for hook -->
    <input type="hidden" name="action" value="save_hw" />
</form>

然后在我的插件的主文件中,我添加了以下内容:

add_action('admin_init', 'RAGLD_dashboard_hardware_init' ); // action hook add/remove hardware

其中,函数定义如下: 另请注意,第一个参数源自admin_post,它是一个保留字,与上表中的action 隐藏字段组合在一起。

function RAGLD_dashboard_hardware_init() {
    // checking for form submission when new hardware is added
    add_action( 'admin_post_save_hw', 'RAGLD_process_hw_form' );
}

在上述add_action 提交表单评估后,将调用函数RAGLD_process_hw_form,该函数旨在验证表单条目并采取相应的操作/重定向。

function RAGLD_process_hw_form() {
    if (form_is_validated) {
        wp_redirect( add_query_arg( array('page' => 'ragld/edit-hardware', 'action'=> 'InvalidData'), admin_url() ));
    } else {
        //do something else
    }
}

这是我暂时能想到的解决方案,如果你觉得更有效可以提出你的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    • 2012-12-14
    相关资源
    最近更新 更多