将订单保存到远程数据库

nbnkbykc  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(453)

我托管了一个带有表的远程mysql数据库 order_master 并在中配置了数据库连接 config.php 并成功连接到远程数据库。在我的本地主机上,我有一个woocommerce商店,现在每当一个订单被放入woocommerce商店,我都希望它也被保存在远程mysql数据库中 order_master .
我试过使用 woocommerce_order_status_completed 但它不起作用。我在中添加了以下代码 functions.php 文件:

add_action('woocommerce_order_status_completed','payment_complete');
function payment_complete($order_id)
{
    alert('Function Called..'); //to check, but function not called
   global $items;
   $order = new WC_Order($order_id);
   global $woocommerce;
   global $new_wpdb;
    $total_amt=WC()->cart->cart_contents_total;
    $stmt = "INSERT INTO order_master (payment_amt) VALUES (%d)";
    $new_wpdb->query( $stmt,$total_amt);
}

有人能告诉我怎么做吗,我没有得到任何提示。

0h4hbjxa

0h4hbjxa1#

使用 woocommerce_new_order 钩住以保存收到的任何新订单。试试这个方法,告诉我是否有效。

add_action( 'woocommerce_new_order', 'your_order_details',  1, 1  );
        function your_order_details($order_id){
/* Configure your remote DB settings here */
        $host = 'localhost';
        $user = 'root';
        $pass = '';
        $db = 'database';
        $new_wpdb = mysqli_connect($host, $user, $pass, $db);
        if (!$new_wpdb) {
            echo mysqli_error($new_wpdb);
        }
        $order = new WC_Order($order_id);
        $order_num = $order_id;         // Order ID
        $order_amount = get_post_meta($order_id, '_order_total', true);     // Amount
        $order_master = "INSERT INTO order_master (payment_amt) VALUES ('$order_amount')";
        $order_master_exe = mysqli_query($new_wpdb, $order_master);
        if ($order_master) {
            mysqli_close($new_wpdb);
        }

相关问题