Pertanyaan Mendapatkan data pesanan setelah hook checkout yang sukses


Di WooCommerce, saya ingin mengirim permintaan ke API setelah pelanggan berhasil memeriksa. Ini pada dasarnya adalah situs web di mana klien menjual kursus online (Seperti udemy).

Ketika pelanggan memeriksa, saya ingin mengirim permintaan API dan mendaftarkan pengguna untuk kursus itu. Saya telah mencoba beberapa kait WooCommerce tetapi tidak ada yang berfungsi untuk saya.

Ini adalah kode yang saya gunakan:

add_action('woocommerce_checkout_order_processed', 'enroll_student', 10, 1);

function enroll_student($order_id)
{
    echo $order_id;
    echo "Hooked";
}

Saya menulis kode ini di dalam plugin yang diaktifkan dan untuk memudahkan saya saat ini menggunakan metode Cash on Delivery.

Adakah yang bisa menunjukkan saya di mana saya akan salah karena ketika saya checkout saya tidak bisa melihat pesan "ketagihan" yang saya cetak atau $order_id?

Saya membawa saya ke halaman sukses dan tidak menunjukkan dua hal ini yang saya cetak.


5
2018-03-01 11:33


asal


Jawaban:


Diperbarui (untuk mendapatkan ID Produk dari item Pesanan seperti yang diminta dalam komentar Anda)

Mungkin Anda bisa menggunakannya woocommerce_thankyou hook sebagai gantinya, yang akan ditampilkan pada halaman pesanan-diterima kode gema Anda, dengan cara ini:

add_action('woocommerce_thankyou', 'enroll_student', 10, 1);
function enroll_student( $order_id ) {

    if ( ! $order_id )
        return;

    // Getting an instance of the order object
    $order = wc_get_order( $order_id );

    if($order->is_paid())
        $paid = 'yes';
    else
        $paid = 'no';

    // iterating through each order items (getting product ID and the product object) 
    // (work for simple and variable products)
    foreach ( $order->get_items() as $item_id => $item ) {

        if( $item['variation_id'] > 0 ){
            $product_id = $item['variation_id']; // variable product
        } else {
            $product_id = $item['product_id']; // simple product
        }

        // Get the product object
        $product = wc_get_product( $product_id );

    }

    // Ouptput some data
    echo '<p>Order ID: '. $order_id . ' — Order Status: ' . $order->get_status() . ' — Order is paid: ' . $paid . '</p>';
}

Kode masuk dalam file function.php dari tema anak aktif Anda (atau tema) atau juga di file plugin apa saja.

Kode ini diuji dan berfungsi.

Maka Anda dapat menggunakan semua kelas WC_Abstract_Order metode pada $order obyek.


11
2018-03-01 13:50



Anda bisa mendapatkan item pesanan pesanan oleh

   // Getting an instance of the order object

    $order = new WC_Order( $order_id );
    $items = $order->get_items();

   //Loop through them, you can get all the relevant data:

    foreach ( $items as $item ) {
        $product_name = $item['name'];
        $product_id = $item['product_id'];
        $product_variation_id = $item['variation_id'];
    }

2
2018-03-01 14:53