2014-01-30 35 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'); 
相关问题