Php 按钮,用于在WooCommerce上为当前产品创建订单
我正在使用“”应答码,我希望当我点击按钮时,一个订单会出现在管理面板上 以下是我的尝试:Php 按钮,用于在WooCommerce上为当前产品创建订单,php,wordpress,woocommerce,form-submit,orders,Php,Wordpress,Woocommerce,Form Submit,Orders,我正在使用“”应答码,我希望当我点击按钮时,一个订单会出现在管理面板上 以下是我的尝试: if (isset($_POST['action'])) { switch ($_POST['action']) { case 'new_order': new_order(); break; } } function new_order() { global $woocommerce; $address
if (isset($_POST['action'])) {
switch ($_POST['action']) {
case 'new_order':
new_order();
break;
}
}
function new_order() {
global $woocommerce;
$address = array(
'first_name' => $shippingName,
'email' => $user_email_id,
'phone' => $billingPhone,
'address_1' => $shippingAddress,
'address_2' => $shippingAddress2,
'city' => $shippingCity,
'state' => $shippingStateCode,
'postcode' => $shippingZip,
'country' => 'US');
);
$order = wc_create_order();
$order->add_product( get_product());
$order->set_address( $address, 'billing' );
$order->calculate_totals();
$order->update_status("Completed", 'Imported order', TRUE);
}
还有我的按钮:
<input type="submit" id="button" name="new_order" value="Submit" >
这是正确的方法吗?欢迎提供任何帮助。更新2-您的代码有点过时,因为
get\u product()
已被wc\u get\u product()
取代
1)首先是要创建订单的函数(带有一个处理添加到订单中的产品Id的变量):
function trigger\u new\u order($from\u product\u id){
$address=数组(
“名字”=>“乔”,
“姓氏”=>“能源部”,
“电子邮件”=>“约翰。doe@gmail.com",
'电话'=>“0123456789”,
“地址1”=>“圣詹姆斯街1号”,
“地址2=>”,
“城市”=>“旧金山”,
“州”=>“加利福尼亚州”,
'邮政编码'=>“92105”,
“国家”=>“美国”
);
$order=wc\U create\U order($from\U product\U id);
$order->set_address($address,'billing');
$order->set_address($address,'shipping');//发货地址
$product=wc\U get\U product($from\U product\U id);
$order->添加产品($product);
$order->计算_总计();
$order->update_状态('completed'、'Imported order',true);
//显示带有订单号的消息
回显“”。sprintf(_;(“订单#%d已创建”),$Order->get_id()。”;
}
代码进入活动子主题(或活动主题)的functions.php文件
2)带有提交按钮的表单将创建订单 在下面的示例中,我们在单个产品页面(前端)上使用此代码,并动态获取产品Id:
if ( isset($_POST['new-order']) && $_POST['new-order'] === 'Submit' ) {
trigger_new_order( get_the_id() );
} else {
?>
<form class="new" method="post">
<input class="button alt" type="submit" id="button" name="new-order" value="Submit" >
</form>
<?php
}
if(设置($\u POST['new-order'])和&$\u POST['new-order']='Submit'){
触发新订单(获取id());
}否则{
?>
$from_product_id-未定义变量它tels me,trigger_new_order-方法调用使用1个参数,但方法签名使用0parametres@ElVyganto很抱歉,我的代码中有一点疏忽…updatedNo。这不起作用。顺便说一句,我试图将所有这些都放到弹出窗口中。@ElVyganto我已经在单个产品页面上测试了代码,它起作用了(在上一个WooCommerce版本)…订单已生成并在后端可见。@Sensanity这只是另一个问题(一个新问题),您需要在问题中提供您尝试过但不起作用的所有代码(堆栈上的人员不会为您编码,但会在提供的代码上帮助您).由于此答案是回答您最初的问题,请您回答,谢谢。
if ( isset($_POST['new-order']) && $_POST['new-order'] === 'Submit' ) {
trigger_new_order( get_the_id() );
} else {
?>
<form class="new" method="post">
<input class="button alt" type="submit" id="button" name="new-order" value="Submit" >
</form>
<?php
}