Wordpress自定义提交按钮

时间:2015-06-25 12:51:28

标签: php wordpress form-submit

我有点失落:d

简短说明:

我希望能够在自定义帖子类型上单击提交按钮时处理$ _POST数据。首先,我可以使用哪些或哪些函数来添加自定义输入提交,其次,如何构建一个提交此按钮的函数? 似乎无法在任何地方找到解决方案!

冗长的解释:

我正在为名为订单的自定义帖子类型构建授权paypal系统。我在一张表中输入了我的订单。我有我的付款信息,我知道我必须做的是捕获付款,但我想要一个按钮,能够做到这一点并返回错误。所以我想要一个单独的按钮来“更新”以及捕获动作的方法,这样我就可以进行API调用等。

我不想要插件。我只需要知道如何输入然后使用$ _POST。

我可以使用自定义元框进行操作吗?

add_meta_box('order_payment','build_order_payment_info','orders','side');

function build_order_payment_info($post){
    <input name="ID" type="hidden" value="ID of my payment">
    <input name="Other info needed" type="hidden" value="">
    <input name="submitPayment" type="submit" value="Process payment">
}

然后在我的订单元

add_action('save_post','save_order');
function save_order(){
    global$post;
    if(isset($_POST['submitPayment'])&&!empty($_POST['ID'])){
        //send payment api
    }else echo"There was an error with the payment";
}

这样的事情会起作用吗?我还读过我可以像add这样向add_action函数提供自定义帖子类型:'save_post_orders',这是正确的吗?

2 个答案:

答案 0 :(得分:1)

使用admin_post操作和wp_nonce_field

使用admin_post时,表格中需要隐藏输入。

<input name='action' type="hidden" value="add_new_client">

使用此功能时,您也想添加动作

add_action('admin_post_add_new_client',array('clients','add_new_client'));

这将导致表单被提交&#39;到clients::add_new_client()

public static function add_new_client(){
   //access $post info here but first do some admin checks etc
   if(!current_user_can('manage_options'))wp_die('you are not allowed to managed these settings');
    check_admin_referer('newClient');
    //do your validation and add whatever 
}

我也在我的表单中使用wp_nonce_feild,如下所示

public function buildForm(){
    echo"<form name='newclientsForm' action='".admin_url('admin.php?page=clients')."'><table class='form-table'>";
    wp_nonce_field('newClient');
    //do rest of form
}

答案 1 :(得分:0)

如果我理解你的话,你需要一些输入字段和一个按钮,将输入中的值发送到服务器上的文件,该文件应该用它做什么?
如果是这样的话,你可以通过两种方式做到这一点:
1 - 好的旧提交按钮
2 - 将ajax调用绑定到元素
例子:
1:http://www.w3schools.com/tags/att_button_form.asp
2:http://api.jquery.com/jquery.ajax/

其余的只是服务器端的脚本(http://php.net/manual/en/reserved.variables.post.php
请注意2:在底部是一些示例,如果您之前从未这样做过,它们更容易理解