ปรับแต่ง Woocommerce เช็ค Order แบบแสดงรายละเอียด

บทความนี้เราจะมาดูการ ปรับแต่ง Woocommerce กันครับ เพราะเป็นที่ยอมรับกันว่า WooCommerce เป็นปลั๊กอินอีคอมเมิร์ซยอดนิยมสำหรับ WordPress ที่ให้เราทำเว็บขายสินค้าออนไลน์ได้ โดยคุณสมบัติอย่างหนึ่งของ WooCommerce คือความสามารถในการดูรายละเอียดคำสั่งซื้อในแผงการดูแลระบบครับ อย่างไรก็ตาม ตามค่าเริ่มต้น รายละเอียดการสั่งซื้อจะไม่แสดงในรูปแบบคอลัมน์ ซึ่งอาจทำให้ดูและจัดการคำสั่งซื้อได้ยาก

โดยโจทย์นั้นมาจากที่ผมทำงานร่วมกับโปรเจ็คของลูกค้า ที่มีไอเดียว่า เป็นไปได้ไหมนะ ถ้าเราอยากดู Order แล้วก็เห็นรายละเอียดต่างๆได้เลย จะได้รู้ได้ทันทีว่า Order นี้ใครสั่ง สั่งอะไรบ้าง ประมาณนี้ครับ ซึ่งแน่นอนว่ามันจะช่วยให้เราจัดการ Order ต่างๆที่มีในเว็บไซต์ได้สะดวกขึ้นครับผม

ปรับแต่ง Woocommerce สำหรับแสดงผล Order ให้ง่ายต่อการจัดการมากขึ้น

ปรับแต่ง Woocommerce สำหรับแสดงผล Order ให้ง่ายต่อการจัดการมากขึ้น

ซึ่งในตัวอย่างนี้ผมจะทำให้แสดงผลเป็นคอลัมน์ คือแสดง หมายเลขโทรศัพท์ (billing_phone) ชื่อผู้สั่ง (billing_first_name, billing_last_name) อีเมลของลูกค้า (Customer Email) ยอดที่สั่ง (Order Amount) และ รายละเอียดสินค้าที่สั่งเข้ามาว่ามีอะไรบ้าง (Product Details)

โดยการปรับแต่งครั้งนี้ ผมจะเขียนคำสั่งลงในไฟล์ functions.php ของไฟล์ธีมที่เราใช้งานนะครับ หรือไม่ก็เขียนลงในปลักอินที่สามารถเขียนโค้ดได้ เช่น code snippets

โดยชุดคำสั่งนั้นเป็นดังนี้ครับ

// Add custom columns to order views in WooCommerce admin
add_filter( 'manage_edit-shop_order_columns', 'add_custom_order_columns' );
function add_custom_order_columns( $columns ) {
    $new_columns = array(
        'billing_phone'   => 'Billing Phone',
        'billing_name'    => 'Billing Name',
        'customer_email'  => 'Customer Email',
        'order_amount'    => 'Order Amount',
        'product_details' => 'Product Details'
    );
    return array_merge( $columns, $new_columns );
}

// Populate custom columns with data in WooCommerce admin
add_action( 'manage_shop_order_posts_custom_column', 'populate_custom_order_columns', 10, 2 );
function populate_custom_order_columns( $column, $post_id ) {
    $order = wc_get_order( $post_id );

    switch ( $column ) {
        case 'billing_phone':
            echo $order->get_billing_phone();
            break;

        case 'billing_name':
            $billing_first_name = $order->get_billing_first_name();
            $billing_last_name = $order->get_billing_last_name();
            echo $billing_first_name . ' ' . $billing_last_name;
            break;

        case 'customer_email':
            echo $order->get_billing_email();
            break;

        case 'order_amount':
            echo $order->get_total();
            break;

        case 'product_details':
            $items = $order->get_items();
            $product_details = '';

            foreach ( $items as $item ) {
                $product_name = $item->get_name();
                $product_quantity = $item->get_quantity();
                $product_price = $item->get_total();
                $product_details .= '<li><strong>'.$product_name . '</strong> (Quantity: ' . $product_quantity . ', Price: ' . $product_price . ')' . "\n".'</li>';
            }

            echo $product_details;
            break;
    }
}

ซึ่ง codes ชุดนี้เพื่อนๆสามารถที่จะนำไปปรับแต่งต่อยอดใช้กับโปรเจ็คตัวเองดูได้นะครับ ส่วนตัวผมก็ว่ามันช่วยให้เราเห็นรายละเอียดคร่าวๆได้เลยว่า คนสั่งสินค้ามา คือใคร สั่งอะไรบ้าง จะได้ไม่ต้องคลิกไปดูแต่ละตัวครับผม

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
Manage Consent Preferences
  • คุกกี้ที่จำเป็น
    Always Active

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้

  • คุกกี้เพื่อการวิเคราะห์

    คุกกี้ประเภทนี้จะทำการเก็บข้อมูลการใช้งานเว็บไซต์ของคุณ เพื่อเป็นประโยชน์ในการวัดผล ปรับปรุง และพัฒนาประสบการณ์ที่ดีในการใช้งานเว็บไซต์ ถ้าหากท่านไม่ยินยอมให้เราใช้คุกกี้นี้ เราจะไม่สามารถวัดผล ปรับปรุงและพัฒนาเว็บไซต์ได้

  • คุกกี้เพื่อปรับเนื้อหาให้เข้ากับกลุ่มเป้าหมาย

    คุกกี้ประเภทนี้จะเก็บข้อมูลต่าง ๆ รวมทั้งข้อมูลวส่วนบบุคลเกี่ยวกับตัวคุณเพื่อเราสามารถนำมาวิเคราะห์ และนำเสนอเนื้อหา ให้ตรงกับความเหมาะสมกับความสนใจของคุณ ถ้าหากคุณไม่ยินยอมเราจะไม่สามารถนำเสนอเนื้อหาและโฆษณาได้ไม่ตรงกับความสนใจของคุณ

บันทึก