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

Byphunsanit

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 จะเป็นตัวแปรที่เก็บว่าวันเสาร์ต่อไปคือวันอะไร

About the author

phunsanit administrator