در یکی از پروژهها قصد داشتم تعداد نسبتا زیادی نوشته را از سیستم دیگر به وردپرس منتقل کنم. برای این کار تلاش کردم از یک فرآیند نیمه خودکار استفاده کنم تا زمان کمتری صرف این انتقال شود و اشتباهات انسانی نیز از بین برود.
هر چند عملیات انتقال با موفقیت به انجام رسید، ولی پس از مدتی متوجه شدم که مطالب منتقل شده در وردپرس در صفحات بعد از صفحهی اول با ترتیب نادرست نمایش داده میشوند و برخی نوشتهها چندین بار تکرار میشوند. همچنین برخی نوشتهها به صورت کلی به نمایش در نمیآیند.
پس از مدتی بررسی و جستجو و با مشاهدهی کوئریهایی ایجاد شده در زمان نمایش، متوجه شدم که وردپرس نتایج را بر اساس فیلد post_date مرتبسازی میکند و به دلیل اینکه این فیلد توسط ربات به صورت یکسان برای تمام مطالب وارد شده است، در هنگام مرتبسازی این خطا به وجود میآید.
برای حل کردن این مشکل، از یک کوئری روی پایگاه داده استفاده کردم که تاریخهای وارد شده در پایگاه داده را به شکل زیر و به صورت تصادفی در بازهی تغییر میدهد:
UPDATE `s_en_posts` SET `post_date` = FROM_UNIXTIME( UNIX_TIMESTAMP( '2015-12-03 21:40:37' ) + FLOOR( 0 + ( RAND( ) * 86400 ) ) ), `post_date_gmt` = `post_date` WHERE post_date = '2015-12-03 21:40:37'