2014-01-30 68 views
6

我在WordPress管理器中創建了一個自定義頁面,該頁面有一個簡單的文件上傳字段和一個提交按鈕。我需要弄清楚如何將網頁提交到可以處理的地方,但無法在網上找到任何東西。有誰知道'行動'需要在窗體上讓它去一個功能或另一個頁面,我可以處理文件?在wordpress的自定義管理頁面上提交表單

+4

如果你離開的行動的空白,將提交給它的頁面。 – DNACode

+0

謝謝!我想出了一段時間...大聲笑..應該關閉這個職位。有一個房子的時刻,並意識到我曾經如何做到這一點。 在if(isset($ _ POST ['submit']))中包裝表單,然後調用我的函數。 –

+0

沒問題,很高興你能想出來 – DNACode

回答

1

謝謝亨特先生。無法爲您提供正確的答案。

在if(isset($ _ POST ['submit']))中包裝表單,然後調用我的函數。

-2

我使用比接受的答案不同的方式來獲得結果回答OP的質詢的特定部分:

有誰知道什麼是「行動」必須在表格上得到它去功能...

通過空白形式行動爲不同的動作可以基於相同的單一形式採取郵寄到同一頁面級。

if (isset($_POST['custom_action'])){ 
    if ($_POST['custom_action'] == 'update'){ 
     if (isset($_POST['Submit'])) { 
      //form validation and gather into a single object $valid; 
      //I put this in a class, so self::update_main_config($valid); 
      //otherwise you can just update_main_config($valid) 
     } 
     if (isset($_POST['Submit_Default'])) { 
      //no form validation needed & defaults handled via custom wp_option, this could also be static function very easily 
      //secondary action group such as self::restore_config_defaults(); 
     } 
    } 
} 

基於我使用的自定義管理頁面作爲我的一個插件,我有條件地設置了我期望發生的上下文。我的管理員配置頁面提交新的值,它可以恢復默認值...但它也可以影響其他模塊基於用戶輸入。我展示瞭如何使用相當簡單的條件來創建更復雜的提交上下文。如果上傳是一張照片,並且管理員需要將控件發佈到任意用戶配置文件 - 但是我們希望重複使用相同的代碼以允許登錄用戶發佈他們自己的配置文件圖片?這就是爲什麼背景,這就是爲什麼我認爲我的方法是相關的。

我喜歡重複使用代碼,並利用單個功能循環來處理任何單個上下文,並且再次使用單個隱藏表單輸入或基於用戶或管理事件的多個控件,一個可以使用相同的形式和理論上的一個或多個提交按鈕來改變上下文。我其實想要2個按鈕來分隔提交者頭腦中的動作,所以我已經展示了這種方法。

這裏是相應的HTML

<form name="config_actions" action="" method="post"> 
<input type="hidden" id="custom_action" name="custom_action" value="update" /> 
<input type="submit" id="my_main_action" name="Submit" value="Update" /> 
<input type="submit" id="my_secondary_action" name="Submit_Default" value="Restore Defaults" /> 
</form> 

使用簡單的JavaScript來有條件地設置輸入#custom_action適於創建我context--對於此示例它驗證時custom_action被設定爲「更新」的緣故一個值,儘管在我的代碼中,我也基於表單響應使用其他上下文。我使用$ _POST ['action']這意味着輸入[name =「action」]不會與form [action =「」]混淆,因爲我以前的代碼暗含了 - 所以是的,那很糟糕。在這裏我更清楚地表明,我有一個名爲'custom_action'的隱藏輸入上下文管理器,並且我有兩個提交按鈕,名爲'Submit'和'Submit_Default',它們都有效地觸發相同的表單,因爲它們都是type = submit。

10

使用此代碼段:

add_action('admin_action_wpse10500', 'wpse10500_admin_action'); 
function wpse10500_admin_action() 
{ 
    // Do your stuff here 
    wp_redirect($_SERVER['HTTP_REFERER']); 
    exit(); 
} 
add_action('admin_menu', 'wpse10500_admin_menu'); 
function wpse10500_admin_menu() 
{ 
    add_management_page('WPSE 10500 Test page', 'WPSE 10500 Test page', 'administrator', 'wpse10500', 'wpse10500_do_page'); 
} 
function wpse10500_do_page() 
{ 
?> 
    <form method="POST" action="<?php echo admin_url('admin.php'); ?>"> 
     <input type="hidden" name="action" value="wpse10500" /> 
     <input type="submit" value="Do it!" /> 
    </form> 
<?php 
} 
+0

謝謝!一直在追逐這一切。 – Nebri

+0

我知道這是一箇舊評論,但是您如何顯示您在行動中所做的任何結果 - wpse10500_admin_action –

0

我不得不改變這樣的代碼工作:

add_action('admin_post_wpse10500', 'wpse10500_admin_action'); 
相關問題