我有点失落: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',这是正确的吗?
答案 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:在底部是一些示例,如果您之前从未这样做过,它们更容易理解