פוסט עם post_status='future' שזמן הפרסום שלו עבר אבל הוא לא הפך ל-publish נראה במסך "Posts" כ"Missed schedule". זוהי לא תקלה ב-WordPress עצמו - זוהי תוצאה כמעט ודאית של WP-Cron שלא רץ בזמן. הפוסט נשאר באוויר במצב ביניים, ויפורסם רק בפעם הבאה ש-WordPress יבדוק - אם בכלל.
למה זה משנה
פספוס פרסום בזמן הוא בעיה רצינית במספר תרחישים: קמפיין שיווקי שתוזמן ל-09:00 ביום שני אבל יוצא ב-12:00 - הקמפיין מאבד מומנטום, מודעות בפייסבוק/גוגל שמצביעות על URL לא מובן (פוסט עתידי לא נטען לציבור). הודעה מתואמת לתאריך - חברת ביטוח שמפרסמת מדריך לתאריך תחילת תקופת הביטוח השנתי, יום שלם אחורה זה אסון. בלוגי תוכן סדרתי - יום שני, רביעי, שישי. כשפוסט מפספס, כל לוח הזמנים נשבר. אמינות מערכת - אם פוסט אחד פספס, כל הפוסטים העתידיים בסיכון. אדמין שלא בודק, יקבל גילוי רק בעוד שבוע כשיגלה שלא פורסם כלום.
איך לזהות
גש ל-Posts > All Posts וסנן לפי "Scheduled". הסתכל על העמודה "Date" - אם זה כבר אחרי השעה הנוכחית והסטטוס עדיין "Scheduled" או "Missed schedule", הפוסט בעייתי. דרך WP-CLI:
wp post list --post_status=future --fields=ID,post_title,post_dateהשווה post_date לזמן הנוכחי (date '+%Y-%m-%d %H:%M:%S'). RankPlus סורק את posts table וסופר רשומות עם post_status='future' AND post_date < NOW().
איך לתקן
- פרסום מיידי: סמן את כל הפוסטים שפספסו > Bulk actions > "Edit" > שנה Status ל-"Published" > Update.
- חלופה ב-WP-CLI:
wp post update $(wp post list --post_status=future --post_date_query='{"before":"now"}' --field=ID) --post_status=publish - פתרון זמני: התקן Scheduled Post Trigger או Missed Scheduled Posts Publisher (חינמיים). הם מנסים לפרסם פוסטים שפספסו בכל בקשת גולש - תיקון נקודתי בלי לפתור את הסיבה.
- פתרון השורש: עבור ל-system cron במקום WP-Cron הפנימי. ראה הביקורת wp_cron_status למדריך מלא. אחרי המעבר, הוסף ל-
wp-config.php:
וב-cron של השרת:define( 'DISABLE_WP_CRON', true );*/5 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1 - התקן WP Crontrol וודא ש-
publish_future_postנמצא ברשימה ולא תקוע. - בדוק שאין שגיאות PHP ב-
wp-content/debug.logשמפילות את WP-Cron באמצע. - וודא ש-timezone של האתר תואם לאזור שלך: Settings > General > Timezone. שעון לא נכון גורם ל-publish_future_post להיתקע אם
post_date_gmtלא תואם.
טעויות נפוצות
- שינוי
post_dateידני ב-DB: עוקף את ה-hook ולא מפעיל הפניות, sitemap update וכדומה. עדיף Bulk Edit ב-wp-admin. - הסתמכות על תוסף Trigger בלי לתקן את הסיבה: זה תיקון פצוע. ברגע שיהיה תוסף נוסף שגורם ל-fatal, גם ה-trigger ייכשל.
- בלבול בין UTC ל-local time: וורדפרס שומר
post_date_gmtב-UTC ו-post_dateבזמן מקומי. אם timezone של האתר לא נכון, הפוסט עלול להופיע בעבר/בעתיד. - WP-Cron כבוי בלי system cron:
DISABLE_WP_CRON=trueבלי תחליף שרת = שום משימת רקע לא תרוץ לעולם. ודא שיש system cron פעיל לפני שמשביתים.
בדיקה לאחר תיקון
תזמן פוסט בדיקה לעוד 5-10 דקות, וחכה. הוא צריך לעבור ל-Published בדיוק בזמן (תוך דקה אחת מהזמן המתוזמן). הרץ wp post list --post_status=future וראה אם יש פוסטים שפספסו - לא צריך להיות. ב-RankPlus הסטטוס יחזור לירוק.