ทำแบนเนอร์คุกกี้บนเว็บ WordPress ให้สอดคล้อง PDPA
พระราชบัญญัติคุ้มครองข้อมูลส่วนบุคคลกำหนดให้การเก็บข้อมูลส่วนบุคคลต้องมีฐานทางกฎหมายรองรับ สำหรับเว็บไซต์ คุกกี้ที่ใช้ติดตามพฤติกรรมเพื่อการตลาดและการวิเคราะห์ต้องได้รับความยินยอมก่อน
คู่มือนี้เป็นแนวทางทางเทคนิคในการทำให้เว็บ WordPress ขอความยินยอมอย่างถูกต้อง ประเด็นสำคัญที่สุดและถูกทำผิดบ่อยที่สุดคือ แบนเนอร์ที่ขึ้นมาแต่สคริปต์ติดตามทำงานไปแล้วตั้งแต่ก่อนผู้ใช้กดยินยอม ซึ่งไม่ต่างจากไม่มีแบนเนอร์เลย
หมายเหตุ เอกสารนี้อธิบายวิธีตั้งค่าทางเทคนิค ไม่ใช่คำแนะนำทางกฎหมาย ควรให้ที่ปรึกษากฎหมายตรวจสอบนโยบายขององค์กร
สิ่งที่ต้องเตรียม
- สิทธิ์ผู้ดูแล WordPress
- รายการคุกกี้และสคริปต์ติดตามทั้งหมดที่เว็บใช้อยู่
- นโยบายความเป็นส่วนตัวที่ผ่านการตรวจสอบแล้ว
ขั้นตอนที่ 1: สำรวจว่าเว็บใช้คุกกี้อะไรบ้าง
เปิดเว็บในโหมดไม่ระบุตัวตน กด F12 เปิดเครื่องมือนักพัฒนา ไปที่แท็บ Application แล้ว Cookies
จดทุกตัวพร้อมแยกประเภท
- จำเป็น คุกกี้ที่ขาดไม่ได้ เช่น
PHPSESSID,wordpress_logged_in_,woocommerce_cart_hashประเภทนี้ไม่ต้องขอความยินยอม - วิเคราะห์ เช่น
_ga,_gidของ Google Analytics ต้องขอความยินยอม - การตลาด เช่น
_fbpของ Facebook Pixel และคุกกี้โฆษณา ต้องขอความยินยอม - ความชอบ เช่น การจำภาษาที่เลือก ต้องขอความยินยอมในกรณีทั่วไป
ตรวจสคริปต์ภายนอกที่โหลดด้วย
curl -s https://example.com | grep -oE 'src="https?://[^"]+"' | grep -v example.com | sort -u
ขั้นตอนที่ 2: ติดตั้งปลั๊กอินจัดการความยินยอม
wp plugin install complianz-gdpr --activate
# หรือ
wp plugin install cookie-law-info --activate
เลือกตัวที่รองรับ Google Consent Mode เพราะเป็นกลไกที่ทำให้สคริปต์ของ Google หยุดเก็บข้อมูลจนกว่าจะได้รับความยินยอมจริง
ขั้นตอนที่ 3: หยุดสคริปต์ติดตามก่อนได้รับความยินยอม
นี่คือหัวใจของเรื่องทั้งหมด วิธีที่ถูกต้องคือไม่โหลดสคริปต์เลยจนกว่าผู้ใช้จะยินยอม
// ใน mu-plugins ไม่โหลด GA จนกว่าจะมีความยินยอม
add_action('wp_head', function () {
if (!isset($_COOKIE['cookie_consent_analytics'])
|| $_COOKIE['cookie_consent_analytics'] !== 'yes') {
return;
}
?>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXX', { anonymize_ip: true });
</script>
<?php
}, 1);
หากใช้ Google Tag Manager ให้ใช้ Consent Mode แทน ซึ่งโหลดสคริปต์ได้แต่ตั้งสถานะเป็นปฏิเสธไว้ก่อน
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// ตั้งค่าเริ่มต้นเป็นปฏิเสธทุกอย่าง ต้องอยู่ก่อนโค้ด GTM
gtag('consent', 'default', {
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
analytics_storage: 'denied',
functionality_storage: 'granted',
security_storage: 'granted',
wait_for_update: 500
});
</script>
เมื่อผู้ใช้กดยินยอม ให้ส่งการอัปเดต
gtag('consent', 'update', {
analytics_storage: 'granted',
ad_storage: 'granted'
});
ขั้นตอนที่ 4: ออกแบบแบนเนอร์ให้ถูกหลัก
สิ่งที่ต้องมี
- ปุ่ม ยอมรับทั้งหมด และ ปฏิเสธทั้งหมด ที่เด่นเท่ากัน การทำปุ่มปฏิเสธให้จางหรือซ่อนไว้ถือว่าไม่ถูกต้อง
- ปุ่ม ตั้งค่า ให้เลือกเปิดปิดรายประเภท
- ลิงก์ไปยังนโยบายความเป็นส่วนตัว
- ไม่ตั้งค่าเริ่มต้นเป็นยินยอม ทุกช่องที่ไม่ใช่คุกกี้จำเป็นต้องเริ่มจากไม่ติ๊ก
- วิธีถอนความยินยอมได้ตลอดเวลา เช่น ปุ่มลอยที่มุมจอ
ห้ามใช้รูปแบบที่บังคับให้ยินยอม เช่น ปิดแบนเนอร์ไม่ได้จนกว่าจะกดยอมรับ หรือทำให้ขั้นตอนปฏิเสธซับซ้อนกว่าการยอมรับหลายเท่า
ขั้นตอนที่ 5: เก็บหลักฐานการให้ความยินยอม
กฎหมายกำหนดให้พิสูจน์ได้ว่าได้รับความยินยอมเมื่อใดและในเงื่อนไขใด ปลั๊กอินที่ดีจะบันทึกให้ โดยเก็บ
- วันเวลาที่ให้ความยินยอม
- ประเภทที่ยินยอม
- เวอร์ชันของนโยบายที่แสดงตอนนั้น
- ตัวระบุแบบไม่ชี้ตัวบุคคล
ตรวจว่าปลั๊กอินเก็บ Log จริง และตั้งระยะเวลาเก็บให้สอดคล้องกับนโยบายขององค์กร
wp db tables | grep -i consent
wp db query "SELECT COUNT(*) FROM wp_cmplz_statistics;"
ขั้นตอนที่ 6: ตั้งอายุความยินยอม
ความยินยอมไม่ควรมีอายุถาวร แนวปฏิบัติที่ใช้กันคือขอใหม่ทุก 6-12 เดือน หรือเมื่อมีการเปลี่ยนแปลงสาระสำคัญของนโยบาย
ตั้งในปลั๊กอินที่หัวข้อเกี่ยวกับอายุคุกกี้ความยินยอม และเพิ่มเลขเวอร์ชันของนโยบายเพื่อบังคับขอใหม่เมื่อแก้ไข
ขั้นตอนที่ 7: จัดการฟอร์มและข้อมูลส่วนบุคคลอื่น
คุกกี้เป็นเพียงส่วนหนึ่ง ฟอร์มที่เก็บชื่อ อีเมล เบอร์โทร ก็เป็นข้อมูลส่วนบุคคลเช่นกัน
- เพิ่มช่องยินยอมในฟอร์มติดต่อ พร้อมข้อความที่ระบุวัตถุประสงค์ชัดเจน
- อย่าติ๊กช่องยินยอมไว้ล่วงหน้า
- ระบุระยะเวลาเก็บข้อมูลและวิธีขอลบ
- ตั้งให้ลบข้อมูลในฐานข้อมูลของปลั๊กอินฟอร์มตามรอบ
WordPress มีเครื่องมือในตัวสำหรับคำขอของเจ้าของข้อมูลที่ Tools แล้ว Export Personal Data และ Erase Personal Data ใช้เมื่อมีผู้ขอใช้สิทธิ
ขั้นตอนที่ 8: ทดสอบว่าทำงานจริง
# ตรวจว่าไม่มีสคริปต์ติดตามก่อนยินยอม
curl -s https://example.com | grep -iE 'googletagmanager|google-analytics|facebook.net|fbevents'
ควรไม่พบอะไรเลยหากตั้งค่าแบบไม่โหลดสคริปต์ก่อน
ทดสอบด้วยเบราว์เซอร์
- เปิดโหมดไม่ระบุตัวตน เปิดเว็บ แล้วดูแท็บ Cookies ต้องมีเฉพาะคุกกี้จำเป็น
- กดปฏิเสธ แล้วรีเฟรช ต้องยังไม่มีคุกกี้วิเคราะห์
- กดยอมรับ แล้วรีเฟรช จึงจะเห็นคุกกี้วิเคราะห์ปรากฏ
- ทดสอบปุ่มถอนความยินยอมว่าลบคุกกี้จริง
ปัญหาที่พบบ่อย
แบนเนอร์ขึ้นแต่คุกกี้ถูกตั้งไปแล้ว
สคริปต์ยังโหลดก่อนได้รับความยินยอม ตรวจตามขั้นตอนที่ 8 และย้ายการโหลดสคริปต์ไปอยู่หลังการยินยอมตามขั้นตอนที่ 3
แบนเนอร์ขึ้นซ้ำทุกครั้งที่เข้าเว็บ
คุกกี้ที่บันทึกความยินยอมถูกลบ มักเกิดจากการตั้งแคชที่ไม่ยกเว้นคุกกี้นี้ หรือโดเมนที่ตั้งคุกกี้ไม่ตรงกัน
หน้าเว็บกระโดดเมื่อแบนเนอร์ปรากฏ
กระทบคะแนน CLS ให้จองพื้นที่ไว้ล่วงหน้าด้วย CSS หรือแสดงแบนเนอร์แบบลอยทับที่ไม่ดันเนื้อหา
Google Analytics ไม่เก็บข้อมูลเลยหลังตั้งค่า
ตรวจว่าเมื่อผู้ใช้กดยินยอมแล้ว มีการส่ง gtag('consent','update',...) จริง ดูในแท็บ Network ว่ามีคำขอไปยัง Google หลังกดยอมรับ
ต้องการคำแนะนำเรื่องการจัดเก็บข้อมูลบนคลาวด์ในประเทศไทย ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี








