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