WordPress: ดูว่า post ทุก ๆ วันเสาร์ใช่มั๋ยWordPress: ดูว่า post ทุก ๆ วันเสาร์ใช่มั๋ย

ด้วยความที่ตั้งใจจะ post ทุก ๆ วันเสาร์ที่เป็นประจำทุกวัน แต่ก็มีบางครั้งที่พลาด ตั้งเวลาเผยแพร่เป็นวันเสาร์พลาดไปเหมือนกัน เลยเขียน query ออกมาหาว่า พลาด บทความไหนบ้าง

SELECT ID, post_date, post_title, -- แปลงเลขวันเป็นชื่อภาษาไทยเพื่อตรวจสอบ CASE DAYOFWEEK (post_date) WHEN 1 THEN 'อาทิตย์' WHEN 2 THEN 'จันทร์' WHEN 3 THEN 'อังคาร' WHEN 4 THEN 'พุธ' WHEN 5 THEN 'พฤหัสบดี' WHEN 6 THEN 'ศุกร์' WHEN 7 THEN 'เสาร์' END AS day_name_th
FROM `wp_posts`
WHERE post_type = 'post' AND post_status IN ('publish', 'future') -- เงื่อนไขหลัก: DAYOFWEEK ต้องไม่ใช่ 7 (วันเสาร์) AND DAYOFWEEK (post_date) <> 7
ORDER BY post_date ASC;

คำอธิบายเพิ่มเติม

  • DAYOFWEEK (post_date) <> 7: นี่คือหัวใจหลักของคำสั่งนี้ครับ มันจะสั่งให้ MySQL ข้ามทุกโพสต์ที่ตรงกับวันเสาร์ ไป และดึงมาเฉพาะวันอาทิตย์ถึงวันศุกร์ เท่านั้น
  • ถ้าต้องการเปลี่ยนเงื่อนไขเป็นเขียนในวัน เสาร์ – อาทิตย์ ก็แก้เงื่อนไขเป็น
    AND DAYOFWEEK (post_date) NOT IN (1, 7)
    จะเห็นว่าฝรั่งเค้าไม่ได้นับลำดับวันเหมือนคนไทย
  • การตรวจสอบ: เพิ่มคอลัมน์ day_name_th มาให้ด้วย เพื่อให้เห็นชัด ๆ ในผลลัพธ์ว่าโพสต์ที่ดึงมานั้น เป็นวันอะไรบ้าง
  • กรองสถานะ: ใส่ post_status IN ('publish', 'future') ไว้ด้วย เพื่อให้ได้เฉพาะบทความที่เผยแพร่แล้วหรือตั้งเวลาไว้ล่วงหน้าครับ

อ่านเเพิ่มเติม