วิธีแก้ปัญหาคอมเม้นท์ของ Facebook Comments Plugin ไม่แสดง เมื่อเปลี่ยนจาก HTTP เป็น HTTPS

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

ปัญหา comment ไม่แสดงหลังจากที่เปลี่ยนไปใช้ HTTPS จริงๆ ผมเจอกับตัวเองตอนที่เปลี่ยน imooh.com ไปใช้ HTTPS เหมือนกัน เพราะผมเลือกที่จะใช้ Facebook Comments Plugin เพื่อให้เพื่อนๆ ที่ใช้ Facebook อยู่แล้วแสดงความคิดเห็นได้เลยไม่ต้องเสียเวลาสมัครสมาชิกอะไรเพิ่มเติม อีกข้อก็คือเราไม่จำเป็นต้องเพิ่มภาระในการเก็บข้อมูลผู้ใช้ให้กับ server ของเราด้วย

สาเหตุที่ comment หายเป็นเพราะ URL ของเว็บหรือบทความที่เราใช้ร่วมกับ comments plugin เปลี่ยนไปนั้นเอง ดูเหมือนว่าตัว comment plugin จะใช้ URL เป็นตัวอ้างอิงในการเก็บข้อมูล comment

พอเรารู้สาเหตุแล้ววิธีแก้ไขก็ง่ายมากครับ แค่บอกให้ comment plugin รู้ว่าหน้าเว็บหรือหน้าบทความของเราที่เปลี่ยนไปใช้ https อ่ะมันคือ หน้านี้ตอนที่ใช้ http นะ โดยใช้ประโยชน์จากการตั้งค่า data-href (HTML5) หรือ href (HTML) ให้เป็น URL ของหน้าเว็บที่เป็น HTTP ธรรมดา เช่น

https://www.imooh.com/solving-comment-messages-disappear-http-to-https

คือ URL ของบทความที่เป็น HTTP นี้นะ

http://www.imooh.com/solving-comment-messages-disappear-http-to-https

ผมใช้วิธีเปรียบเทียบ POST ID สุดท้ายที่เราเปลี่ยนจาก HTTP ไปเป็น HTTPS ของ WordPress ในการสลับค่า สมมุติว่า ID สุดท้ายของก่อนที่ผมจะเปลี่ยนคือ 99 ใส่โค้ดนี้เข้าไป

<?php
$my_permalink = get_permalink();
if ($post->ID < 99) {
    $my_permalink = str_replace("https://", "http://", $my_permalink);
}
?>
<div class="fb-comments" data-href="<?php echo $my_permalink;?>" 
data-num-posts="15" data-width="700"></div>

เท่านี้ Facebook comments plugin ก็รู้แล้วว่าควรใช้ URL ไหนไปดึงข้อมูล comment มาแสดงครับ