wordpress - WooCommerce 以编程方式创建可下载产品的订单

标签 wordpress woocommerce orders

我使用 wc_create_order 创建订单,一切正常,只是用户无法在“我的下载”部分获得可下载产品的下载链接。

    $def_args = array('customer_id' => $user_id, 'status' => 'completed');
    $order = wc_create_order( $def_args );

    $targs['totals']['subtotal'] = $ord['pay_amount'];
    $targs['totals']['total'] = $ord['pay_amount'];
    $targs['totals']['subtotal_tax'] = 0;
    $targs['totals']['tax'] = 0;

    $sku_ = $ord['sku'];

    $order->add_product( get_product_by_sku( $sku_ ) , 1, $targs ); //(get_product with id and next is for quantity)
    $order->set_address( $address, 'billing' );
    $order->set_address( $address, 'shipping' );
    $order->set_total( $ord['pay_amount'] );
    $order->calculate_totals();

    // I took get_product_by_sku function in stackoverflow but I don't remember which question. 
    function get_product_by_sku( $sku ) {

        global $wpdb;

        $product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku ) );

        if ( $product_id ) return new WC_Product( $product_id );

        return null;
    }

$ord 变量有一些关于订单的信息。

我是否需要调用一个函数或类似的函数来使用下载链接进行订购?

最佳答案

我找到了解决方案,在创建订单时,进行状态处理,然后调用 update_status。

$def_args = array('customer_id' => $user_id, 'status' => 'processing');
...
$order->update_status('completed');

然后用户有她/他的下载链接。

关于wordpress - WooCommerce 以编程方式创建可下载产品的订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28088048/

相关文章:

css - 我在哪里应用 Bootstrap Wordpress 分页样式

javascript - 如何在 JPlayer 的 Javascript onClick 事件中使用动态元素 ID

php - 更改 Woocommerce 电子邮件表总计中的 "Shipping"标签?

php - 从订单 ID 获取订阅 ID

mysql - UNIX_TIMESTAMP MYSQL,无法获得正确的查询

javascript - Uncaught TypeError : $template. get 不是一个函数

php - 在 Woocommerce 中隐藏一些结帐字段问题

mysql - 如何在 Woocommerce 中删除具有相同产品 ID 的重复产品?

php - 在 "Thank you"页面显示订单的发货方式

css - 元素符号列表 CSS