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