วัน: 13 กรกฎาคม 2019

WordPress: เปลี่ยนวันที่ post ทั้งหมดให้สม่ำเสมอWordPress: เปลี่ยนวันที่ post ทั้งหมดให้สม่ำเสมอ

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

SET 
 @row_number = 0;
SET 
 @start_date = '2009-08-08';
-- วันเสาร์แรกที่ถูกต้อง (8 สิงหาคม 2009)
UPDATE 
 `wppitt_posts` AS p1 
 JOIN (
 SELECT 
  Id, 
  (@row_number := @row_number + 1) AS rn -- กำหนดเลขลำดับตาม Id
 FROM 
  `wppitt_posts` 
 WHERE 
  post_status IN ('publish', 'future') 
  AND post_title NOT LIKE 'http%' 
  AND post_type = 'post' 
 ORDER BY 
  Id ASC -- กำหนดลำดับการอัปเดต
  ) AS ranked_posts ON p1.Id = ranked_posts.Id 
SET 
 p1.post_date = DATE_ADD(
 @start_date, 
 INTERVAL (ranked_posts.rn - 1) * 7 DAY -- คำนวณวันเสาร์ถัดไป
 ), 
 p1.post_date_gmt = DATE_ADD(
 @start_date, 
 INTERVAL (ranked_posts.rn - 1) * 7 DAY -- ใช้ค่าเดียวกันสำหรับ post_date_gmt
 ) 
WHERE 
 p1.post_status IN ('publish', 'future') 
 AND p1.post_title NOT LIKE 'http%' 
 AND p1.post_type = 'post';
-- เพื่อป้องกันปัญหาการใช้ตัวแปรในเซสชันถัดไป (แนะนำ)
SET 
 @row_number = NULL;
SET 
 @start_date = NULL;

script นี้จะ update วันที่ post_date และ post_date_gmt ให้เป็นวันเสาร์ได้ทั้งหมด แล้วก็ได้รู้ความจริง ว่า เวลามันหายไปเป็นปีเลย T_T

  • วันที่ 2009-08-08 คือ เสาร์แรกหลังจากวันเกิด และเจอว่าเป็นวันที่แผยแพร่ blog ครั้งแรก
  • @start_date จะเป็นตัวแปรที่เก็บว่าวันเสาร์ต่อไปคือวันอะไร

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