Developer Snippet Diary

Wordpress Get Orders List in single file using woocommerce

<?php

require_once('wp-load.php');


// Check if WooCommerce is active
if ( class_exists( 'WooCommerce' ) ) {
    // Get selected status from the dropdown
    $status = isset( $_GET['status'] ) ? sanitize_text_field( $_GET['status'] ) : '';

    // Fetch orders based on the selected status
    $args = array(
        'post_type'   => 'shop_order',
        'post_status' => $status,
        'posts_per_page' => -1,
    );
    $orders_query = new WP_Query( $args );

    // Display page header
    echo '<h1>Orders</h1>';

    // Display filter dropdown
    echo '<form method="get">';
    echo '<label for="status">Filter by status:</label>';
    echo '<select id="status" name="status">';
    echo '<option value="">All</option>';
    echo '<option value="wc-processing" ' . selected( $status, 'wc-processing', false ) . '>Processing</option>';
    echo '<option value="wc-completed" ' . selected( $status, 'wc-completed', false ) . '>Completed</option>';
    echo '<option value="wc-cancelled" ' . selected( $status, 'wc-cancelled', false ) . '>Cancelled</option>';
    echo '<option value="wc-pending" ' . selected( $status, 'wc-pending', false ) . '>Pending Payment</option>';
    echo '<option value="wc-refunded" ' . selected( $status, 'wc-refunded', false ) . '>Refunded</option>';
    echo '</select>';
    echo '<input type="submit" value="Filter">';
    echo '</form>';
    $unique_emails = array();
    // Display orders table
    if ( $orders_query->have_posts() ) {
       

        while ( $orders_query->have_posts() ) {
            $orders_query->the_post();
            $order = wc_get_order( get_the_ID() );
            //echo '<td>' . $order->get_order_number() . '</td>';
            $name =  $order->get_billing_first_name() . ' ' . $order->get_billing_last_name();
            $emailis = $order->get_billing_email();
            $unique_emails[$emailis] = $name;

            //echo '<td>' . $order->get_date_created()->date( 'Y-m-d H:i:s' ) . '</td>';
            //echo '<td>' . wc_get_order_status_name( $order->get_status() ) . '</td>';
            //echo '<td>' . $order->get_total() . '</td>';
        }

        // Reset post data
        wp_reset_postdata();
    } else {
        echo 'No orders found.';
    }
} else {
    echo 'WooCommerce is not active.';
}
foreach ($unique_emails as $email => $name) {
    echo $name.",".$email."<br/>";
}

die;

?>

 

Posted by: R GONDAL
Email: rizikmw@gmail.com