หมวดหมู่: WordPress

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 
 `wp_posts` AS p1 
 JOIN (SELECT 
 Id, (@row_number := @row_number + 1) AS rn -- กำหนดเลขลำดับตาม Id
 FROM 
 `wp_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 จะเป็นตัวแปรที่เก็บว่าวันเสาร์ต่อไปคือวันอะไร

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