2012-10-11 57 views
1

案例:我在頁面中有一個表單,它使用戶能夠在簡單的文本文件中添加某些值。現在我想在成功添加值後重定向到同一頁面。在Wordpress中的自定義插件頁面中重定向

讀/寫代碼一切正常,我甚至把重定向代碼,但這會顯示警告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"); 

} 

問題:

  • 我們該怎麼辦redirection(重定向)在WordPress在我們的插件的形式提交後?
  • ob_start wonb't工作,所以不建議我這個無論是
+0

貨運邪教編程警告:''$ custom_url「'。 –

+0

@MarcB:不要告訴我有關變量的問題,其他的工作都是正常的,它只是在我的頭文件被執行之前發送的頭文件。任何在這方面的幫助將受到高度讚賞 –

回答

7

好吧,我設法用鉤來做到這一點。我使用下面的代碼做了重定向。需要注意的是,表格操作設置爲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 
    } 
} 

這是我現在可以考慮的解決方案,如果你覺得它們更有效,你可以建議你的答案。

相關問題