ทำแบนเนอร์คุกกี้บนเว็บ WordPress ให้สอดคล้อง PDPA

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

โดย ทีมงาน THAI DATA CLOUD อัปเดต อ่าน 9 นาที เข้าชม 6 ครั้ง

แชร์FacebookXLINELinkedIn
WordPress — ทำแบนเนอร์คุกกี้บนเว็บ WordPress ให้สอดคล้อง PDPA
ทำแบนเนอร์คุกกี้บนเว็บ WordPress ให้สอดคล้อง PDPA

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

คู่มือนี้อธิบาย WordPress ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย

พระราชบัญญัติคุ้มครองข้อมูลส่วนบุคคลกำหนดให้การเก็บข้อมูลส่วนบุคคลต้องมีฐานทางกฎหมายรองรับ สำหรับเว็บไซต์ คุกกี้ที่ใช้ติดตามพฤติกรรมเพื่อการตลาดและการวิเคราะห์ต้องได้รับความยินยอมก่อน

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

หมายเหตุ เอกสารนี้อธิบายวิธีตั้งค่าทางเทคนิค ไม่ใช่คำแนะนำทางกฎหมาย ควรให้ที่ปรึกษากฎหมายตรวจสอบนโยบายขององค์กร

สิ่งที่ต้องเตรียม (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 ต้องมีเฉพาะคุกกี้จำเป็น
  • กดปฏิเสธ แล้วรีเฟรช ต้องยังไม่มีคุกกี้วิเคราะห์
  • กดยอมรับ แล้วรีเฟรช จึงจะเห็นคุกกี้วิเคราะห์ปรากฏ
  • ทดสอบปุ่มถอนความยินยอมว่าลบคุกกี้จริง

ปัญหาที่พบบ่อยเกี่ยวกับ WordPress

แบนเนอร์ขึ้นแต่คุกกี้ถูกตั้งไปแล้ว

สคริปต์ยังโหลดก่อนได้รับความยินยอม ตรวจตามขั้นตอนที่ 8 และย้ายการโหลดสคริปต์ไปอยู่หลังการยินยอมตามขั้นตอนที่ 3

แบนเนอร์ขึ้นซ้ำทุกครั้งที่เข้าเว็บ

คุกกี้ที่บันทึกความยินยอมถูกลบ มักเกิดจากการตั้งแคชที่ไม่ยกเว้นคุกกี้นี้ หรือโดเมนที่ตั้งคุกกี้ไม่ตรงกัน

หน้าเว็บกระโดดเมื่อแบนเนอร์ปรากฏ

กระทบคะแนน CLS ให้จองพื้นที่ไว้ล่วงหน้าด้วย CSS หรือแสดงแบนเนอร์แบบลอยทับที่ไม่ดันเนื้อหา

Google Analytics ไม่เก็บข้อมูลเลยหลังตั้งค่า

ตรวจว่าเมื่อผู้ใช้กดยินยอมแล้ว มีการส่ง gtag('consent','update',...) จริง ดูในแท็บ Network ว่ามีคำขอไปยัง Google หลังกดยอมรับ

ต้องการคำแนะนำเรื่องการจัดเก็บข้อมูลบนคลาวด์ในประเทศไทย ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/

สรุปขั้นตอน WordPress

ทบทวน WordPress ทั้งหมดตามลำดับ ก่อนนำไปใช้กับระบบจริง

  1. สำรวจว่าเว็บใช้คุกกี้อะไรบ้าง
  2. ติดตั้งปลั๊กอินจัดการความยินยอม
  3. หยุดสคริปต์ติดตามก่อนได้รับความยินยอม
  4. ออกแบบแบนเนอร์ให้ถูกหลัก
  5. เก็บหลักฐานการให้ความยินยอม
  6. ตั้งอายุความยินยอม
  7. จัดการฟอร์มและข้อมูลส่วนบุคคลอื่น
  8. ทดสอบว่าทำงานจริง

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

อ่านเพิ่มเติมเกี่ยวกับ WordPress

แชร์FacebookXLINELinkedIn

มีคำถามเรื่องบริการ? ติดต่อทีมงาน