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
}