หมวดไฟฟ้า/อิเล็กทรอนิกส์/คอมพิวเตอร์ => WordPress => Programming => ห้องคอมพิวเตอร์ => นานาสาระ WP => ข้อความที่เริ่มโดย: Prog Man ที่ 07 ตุลาคม 2569, 09:37:37

หัวข้อ: การลบฟิลด์บางฟิลด์ออกจากหน้า Check Out
เริ่มหัวข้อโดย: Prog Man ที่ 07 ตุลาคม 2569, 09:37:37
การลบฟิลด์บางฟิลด์ออกจากหน้า Check Out

วิธีการแก้ปัญหานี้ไม่ยากเลยครับ โดยวิธีการลบออก เราเรียกว่าการ unset ครับ

ให้เราเปิดไฟล์ functions.php ในธีมของเราขึ้นมาครับ

https://gist.github.com/jgalea/5884548

แล้วให้เราใส่คำสั่งด้านบนนี้ลงไปครับ อยากจะลบอันไหนก็ unset ออกให้หมด (โค้ดทั้งหมดนี้คือลบทุกฟิลด์ครับ อยากจะเก็บตัวไหนไว้ ก็ลบบรรทัดนั้นออกนะครับ) ยกตัวอย่าง ผมอยากลบ company, address1 ,address 2 ออก ผมก็ใส่เฉพาะโค้ดนี้ครับ


<?php
 
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
 
function custom_override_checkout_fields( $fields ) {
 unset($fields['billing']['billing_company']);
 unset($fields['billing']['billing_address_1']);
 unset($fields['billing']['billing_address_2']);
 return $fields;
}
?>

นี่แหละครับ วิธีการแก้ไข ง่ายมากๆเลยครับ ยังไงก็ลองนำไปใช้ดูนะครับ
   -ขอบคุณเจ้าของกระทู้ ข้อมูลมาจากล่างนี้ครับ
https://buksohn.com/remove-fields-from-check-out-page-of-woocommerce.html
หัวข้อ: การลบฟิลด์บางฟิลด์ออกจากหน้า Check Out
เริ่มหัวข้อโดย: Prog Man ที่ 07 ตุลาคม 2569, 15:38:07
     ลงนำโค๊ดได้บนไปใช้แล้ว ไม่ได้ผล

    เลยถาม AI ต่อว่าเป็นเพราะอะไร แจ้งมาแบบนี้

ตรงนี้มีภาพ! แต่ท่านจะมองไม่เห็น , ท่านต้อง  สมัครสมาชิก หรือ ลงชื่อเข้าระบบ
 (https://postimg.cc/CBjznCDD)

     โค๊ดเวอร์ชั่นใหม่ จะเป็นแบบนี้
โค๊ด: [Select]
// ซ่อนและยกเลิกการบังคับกรอกที่อยู่สำหรับระบบ Checkout Block (ทำงานเมื่อสินค้าในตะกร้าเป็นสินค้าดิจิทัล)
add_filter( 'woocommerce_get_country_locale', 'custom_remove_checkout_blocks_fields', 9999 );
function custom_remove_checkout_blocks_fields( $locale ) {
    // ตรวจสอบว่าในตะกร้าเป็นสินค้า Virtual/Downloadable ทั้งหมด (ไม่ต้องจัดส่ง)
    if ( WC()->cart && ! WC()->cart->needs_shipping() ) {
        foreach ( $locale as $country => $fields ) {
            // สั่งให้ฟิลด์เหล่านี้ไม่ต้องกรอก (required = false) และซ่อนออกไป (hidden = true)
            $fields_to_hide = array('address_1', 'address_2', 'city', 'state', 'postcode');
            foreach ( $fields_to_hide as $field ) {
                if ( isset( $locale[$country][$field] ) ) {
                    $locale[$country][$field]['required'] = false;
                    $locale[$country][$field]['hidden'] = true;
                }
            }
        }
    }
    return $locale;
}
หัวข้อ: การลบฟิลด์บางฟิลด์ออกจากหน้า Check Out
เริ่มหัวข้อโดย: Auto Man ที่ 07 ตุลาคม 2569, 18:15:02
https://auto.carbabyz.com/wp-admin/admin.php?page=checkout_form_designer&tab=fields&c_type=classic