تخطَّ إلى المحتوى
جميع المقالات
ووردبريس

دليل خطوة بخطوة لأتمتة جدولة ونشر المحتوى في ووردبريس

أتمتة جدولة المحتوى في ووردبريس من خلال إعداد WP-Cron الأصلي، أو إضافات التحرير، أو النشر المباشر عبر واجهة برمجة التطبيقات REST باستخدام كلمات المرور الخاصة بالتطبيقات.

وقت القراءة 10 دقيقةكتابة BlogTend
دليل خطوة بخطوة لأتمتة جدولة ونشر المحتوى في ووردبريس

أتمتة جدولة المحتوى في ووردبريس تقضي على تأخيرات النشر اليدوي. يمكنك استخدام الأدوات الأصلية، أو إضافات متخصصة للنشر المتكرر أو الجماعي، أو تكاملات واجهة برمجة التطبيقات (API) لدفع المحتوى من أنظمة خارجية. كل طريقة تناسب سير عمل مختلف، بدءًا من المدونين الأفراد الذين يديرون عددًا قليلًا من المنشورات وحتى الفرق التي تبني خطوط إنتاج آلية.

لماذا يفشل النشر اليدوي

يربط النشر اليدوي جدولك بتوفر شخصي. يؤدي تفويت المواعيد النهائية إلى محتوى قديم وكسر إيقاع التحرير. تكافئ محركات البحث أنماط النشر المنتظمة، بينما يبني الجمهور عادات حول مواعيد نشر موثوقة.

تقدم العمليات اليدوية أيضًا أخطاء بشرية: فئات خاطئة، صور مميزة منسية، وسوم غير متسقة، ونشر مبكر. تزيل الأتمتة نقاط الفشل هذه عن طريق ترميز قواعد سير العمل في خطوات قابلة للتكرار.

جدولة ووردبريس الأصلية وWP-Cron

يتضمن ووردبريس أساسيات النشر المستقبلي في واجهته الأساسية. عند تعديل منشور، انقر على لوحة النشر، وحدد تاريخًا ووقتًا مستقبليًا، وسيغير ووردبريس الحالة إلى "مجدول". ينشر المنشور تلقائيًا عندما يحين ذلك الوقت.

يقع خلف هذه الميزة WP-Cron، وهو مجدول مهام ووردبريس. على عكس cron الخاص بنظام Linux، لا يعمل WP-Cron كعملية خلفية دائمة. كما يوضح فريق وثائق ووردبريس الرسمي: "يعمل WP-Cron عن طريق التحقق، مع كل تحميل لصفحة، من قائمة المهام المجدولة لمعرفة ما يجب تشغيله. سيتم استدعاء أي مهام حان وقت تشغيلها أثناء ذلك التحميل للصفحة. لا يعمل WP-Cron باستمرار مثل نظام cron؛ بل يتم تفعيله فقط عند تحميل الصفحة."

يخلق هذا الهيكل مشكلتين في الموثوقية. في المواقع ذات الزيارات المنخفضة، قد لا يحدث تحميل صفحة بالقرب من الوقت المجدول، مما يسبب أخطاء "فقدان الجدولة". في المواقع المخزنة مؤقتًا باستخدام Varnish، أو التخزين المؤقت الشامل من Cloudflare، أو تخزين الصفحات الثابتة، يتم تقديم HTML المخزن دون تنفيذ PHP، لذا لا يتم تشغيل WP-Cron أبدًا.

استبدال WP-Cron بـ Cron على مستوى الخادم

للحصول على جدولة موثوقة، قم بتعطيل WP-Cron وأوكل التنفيذ إلى مجدول مهام خادمك. توصي وثائق مطوري ووردبريس الرسمية بهذا النهج: "لا يعمل WP-Cron بشكل مستمر، مما قد يكون مشكلة إذا كانت هناك مهام حرجة يجب أن تعمل في الوقت المحدد. هناك حل سهل لهذا. ببساطة، قم بإعداد مجدول مهام النظام الخاص بك للعمل على الفترات الزمنية التي ترغب بها."

  1. Disable WP-Cron in wp-config.phpAdd the line define('DISABLE_WP_CRON', true); قبل تعليق "هذا هو كل شيء، توقف عن التعديل!".
  2. Create a system crontab entryEdit your crontab with crontab -e وأضف سطرًا لجلب wp-cron.php على فترات منتظمة. الخيارات الشائعة: */5 * * * * wget -q -O - https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1 أو */10 * * * * curl -s https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1.
  3. Alternatively, use WP-CLIIf WP-CLI is installed, run */5 * * * * cd /path/to/wordpress && wp cron event run --due-now >/dev/null 2>&1. يتجاوز هذا العبء الإضافي لـ HTTP لكنه يتطلب وصولاً إلى سطر الأوامر (CLI).

تختلف المصادر حول الطريقة المثلى للتنفيذ. تفضل وثائق ووردبريس الرسمية الاستدعاء عبر HTTP (باستخدام wget أو curl مع ?doing_wp_cron) لضمان تعبئة ثوابت خادم الويب ومتغيرات HTTP بشكل صحيح. غالبًا ما تفضل أدلة الاستضافة عالية الأداء تنفيذ PHP المباشر أو WP-CLI للقضاء على عبء طلبات HTTP ومخاطر انتهاء مهلة الاتصال. كلاهما يعمل؛ اختر بناءً على بيئة استضافتك وقيود الأداء لديك.

إضافات لسير عمل متقدمة للجدولة

تتعامل الجدولة الأصلية مع المنشورات الفردية. بالنسبة للجدولة الجماعية، والمحتوى المتكرر، والتقويمات التحريرية، واستعادة الجداول المفقودة، تحتاج إلى أدوات إضافية.

الجدولة الأصلية تتعامل مع المنشورات الفردية. للجدولة الجماعية، والمحتوى المتكرر، والتقويمات التحريرية، واستعادة الجداول المفقودة، تحتاج إلى أدوات إضافية.
FeatureNative WordPressPlugin-Based AutomationExternal API Integration
Single post schedulingBuilt-inBuilt-inVia REST API
Bulk schedulingNot availableVisual calendar drag-and-dropScripted batch uploads
Recurring postsNot availablePlugin-dependentExternal scheduler triggers API
Missed schedule recoveryتدخل يدويآلييعتمد على موثوقية Cron
المشاركة التلقائية عبر وسائل التواصل الاجتماعيغير متاحمتاح عبر الإضافاتيتطلب خدمة منفصلة
تعقيد الإعدادبسيط للغايةمتوسطمرتفع (يتطلب تطويرًا)

SchedulePress

يوفر SchedulePress (المعروف سابقًا باسم WP Scheduled Posts) تقويمًا تحريريًا مرئيًا، وطوابير جدولة تلقائية جماعية، واستعادة للجدولة الفائتة. يمكنك سحب المسودات إلى تواريخ التقويم، وتحديد قواعد تكرار النشر (مثل: "النشر في الساعة 9 صباحًا أيام الثلاثاء والخميس")، والسماح للإضافة بملء الأماكن الشاغرة من طابور مسوداتك تلقائيًا.

PublishPress Future

تركز إضافة PublishPress Future (المعروفة سابقًا باسم Post Expirator) على أتمتة دورة حياة المحتوى بعد النشر الأولي. مع أكثر من 100,000 تثبيت نشط، تقوم هذه الإضافة بأتمتة الإجراءات المستقبلية: إلغاء النشر، أو تحويل المنشور إلى مسودة، أو تغيير التصنيفات، أو نقل المنشورات إلى سلة المهملات بعد فترة زمنية محددة. تتناسب هذه الميزة جيدًا مع استراتيجيات المحتوى الدائم الذي يحتاج إلى ظهور محدد بزمن معين.

Revive Old Posts

تقوم إضافة Revive Old Posts (المعروفة أيضًا باسم Revive Social)، والتي تتمتع بأكثر من 40,000 تثبيت نشط، بإعادة تدوير المحتوى الحالي إلى قنوات التواصل الاجتماعي على فترات متكررة. ورغم أنها ليست أداة جدولة نشر مخصصة لـ WordPress بحد ذاتها، إلا أنها تعزز قيمة المحتوى المجدول من خلال أتمتة إعادة التوزيع.

WP Crontrol

تعرض إضافة WP Crontrol جميع أحداث WP-Cron المسجلة في لوحة التحكم الخاصة بك، وتتيح لك فحص أوقات تشغيلها التالية، كما تسمح بالتشغيل اليدوي لأغراض تصحيح الأخطاء. وهي ضرورية عندما تفشل المنشورات المجدولة بصمت.

إعداد المنشورات المتكررة باستخدام PublishPress Future

فيما يلي دليل عملي لإعداد إدارة آلية لدورة حياة المحتوى.

  1. التثبيت والتنشيطمن قائمة Plugins > Add New، ابحث عن "PublishPress Future"، ثم قم بتثبيتها وتنشيطها.
  2. إعداد الإجراءات الافتراضيةانتقل إلى Settings > PublishPress Future. حدد إجراءك الافتراضي المفضل (مسودة، حذف، سلة مهملات، تثبيت، إلغاء تثبيت، أو تغييرات التصنيف) والانتهاء الافتراضي للمدة الزمنية.
  3. تمكين الجدولة لكل منشورفي محرر المنشورات، ستظهر خانة بيانات خاصة باسم "PublishPress Future". ضع علامة على خيار "Enable Post Expiration"، وحدد الإجراء، ثم عيّن التاريخ/الوقت أو الانحراف النسبي (مثل: "بعد 7 أيام من النشر").
  4. التحرير الجماعي للمنشورات الحاليةمن قائمة Posts > All Posts، حدد عدة منشورات، واختر "Edit" من القائمة المنسدلة للإجراءات الجماعية، ثم طبّق قاعدة انتهاء صلاحية موحدة على المجموعة المحددة.

يناسب هذا سير العمل المحتوى الموسمي، والمنشورات الترويجية، والإعلانات الحساسة للزمن التي يجب أن تتقاعد تلقائيًا.

دمج مصادر المحتوى الخارجية

غالبًا ما تعني الأتمتة سحب المحتوى من خارج WordPress: مثل خلاصات RSS، وتدفقات وسائل التواصل الاجتماعي، وأدوات الكتابة بالذكاء الاصطناعي، أو مجمعات الأخبار المنسقة. يوجد نمطان رئيسيان للتكامل: إضافات الاستيراد المعتمدة على الخلاصات، والنشر المباشر عبر واجهات برمجة التطبيقات (API).

تستطلع إضافات استيراد الخلاصات (مثل WP RSS Aggregator أو Feedzy) خلاصات RSS الخارجية على فترات منتظمة وتُنشئ منشورات WordPress من العناصر الواردة. عادةً ما يتضمن الإعداد إدخال رابط الخلاصة، وربط الحقول بهيكل المنشور، وتحديد حالة النشر (مسودة أو منشور)، وتعريف وتيرة الاستطلاع. تعمل هذه الإضافات بشكل جيد لسير عمل تنسيق المحتوى وتجميع الأخبار.

بالنسبة لتكامل أكثر إحكامًا، يمكن للخدمات الخارجية دفع المحتوى مباشرة إلى WordPress عبر REST API، مما يلغي الحاجة لأن يقوم WordPress بالاستطلاع الخارجي بنفسه.

النشر البرمجي عبر WordPress REST API

منذ إصدار WordPress 4.7 (ديسمبر 2016)، أصبحت نقاط نهاية محتوى REST API جزءًا أساسيًا من النواة. يمكن للأنظمة الخارجية إنشاء وقراءة وتحديث وحذف المنشورات باستخدام طلبات HTTP القياسية. يتطلب جدولة المنشورات والصفحات برمجيًا بناءً محددًا لحمولة البيانات (Payload).

المصادقة باستخدام كلمات مرور التطبيقات

قدم WordPress 5.6 (ديسمبر 2020) كلمات مرور التطبيقات (Application Passwords): وهي بيانات اعتماد آمنة وقابلة للإلغاء للوصول البرمجي. يحصل كل خدمة خارجية على كلمة مرور خاصة بها، ويمكنك إبطالها دون تغيير كلمة المرور الرئيسية لحسابك.

  1. إنشاء كلمة مرور تطبيقفي ملف تعريف WordPress الخاص بك، انقر على اسم التطبيق (مثل: "Content Publisher")، ثم اضغط على زر "Add New Application Passwords". انسخ كلمة المرور الناتجة واحتفظ بها في مكان آمن.
  2. Assign appropriate capabilitiesThe authenticated user must possess the publish_posts capability to schedule or publish. Per WordPress role documentation, Administrators and Editors have this by default; Authors possess it for their own posts only. Contributors lack it entirely, and attempts to publish via API return 403 Forbidden or downgrade to pending status.
  3. Construct the POST requestSend an HTTP POST to https://yoursite.com/wp-json/wp/v2/posts with Basic Authentication header Authorization: Basic base64(username:application_password). For scheduling, the JSON payload must include "status": "future" وطابع زمني مستقبلي بصيغة ISO 8601 عبر date (المنطقة الزمنية للموقع) أو date_gmt (التوقيت العالمي المنسق UTC).

مثال على حمولة البيانات لمنشور مجدول:

{
  "title": "Weekly Industry Roundup",
  "content": "This week's developments include...",
  "status": "future",
  "date": "2026-10-10T09:00:00",
  "categories": [3, 7]
}

اعتبارات أمنية للوصول الخارجي

يمنح منح الخدمات الخارجية صلاحية الكتابة إلى موقع WordPress الخاص بك مخاطر محددة تتطلب التخفيف من حدتها.

إجراءات الحماية

  • استخدم كلمات المرور الخاصة بالتطبيقات بدلاً من بيانات اعتماد الحساب الرئيسية، وأنشئ حساب خدمة مخصصًا بحد أدنى من الصلاحيات المطلوبة بدلاً من الوصول كمسؤول.
  • قيد publish_posts المستخدمين الموثوق بهم؛ ولا تمنحها أبدًا لحسابات واجهة برمجة التطبيقات التي تحتاج فقط إلى إرسال مسودات للمراجعة.
  • فعّل HTTPS لتشفير رؤوس المصادقة الأساسية أثناء النقل؛ فبدون TLS، تُنقل بيانات الاعتماد كنص واضح.
  • قم بتدوير كلمات مرور التطبيقات دوريًا وألغِها فورًا إذا تم اختراق الخدمة أو إيقاف تشغيلها.
  • سجّل طلبات واجهة برمجة التطبيقات عبر إضافات الأمان أو سجلات الخادم للكشف عن أنماط النشر غير الطبيعية.

الثغرات الشائعة

  • يمكن لحسابات واجهة برمجة التطبيقات ذات الصلاحيات المفرطة نشر أو تعديل أو حذف أي محتوى إذا تسربت بيانات الاعتماد.
  • تمنح كلمات مرور التطبيقات المسروقة وصولاً دائمًا حتى يتم إلغاؤها يدويًا.
  • يمكن للخدمات الخارجية ذات صلاحية الكتابة حقن جافاسكريبت خبيث في محتوى المنشورات إذا فشل تعقيم المدخلات.
  • لا يفرض نواة WordPress تحديد المعدل؛ لذا يمكن للحساب المخترق إغراق موقعك بالمنشورات.

بالنسبة للفرق التي تبني خطوط معالجة آلية، فكر في طبقة وسيطة تتحقق من حمولات البيانات الخارجية قبل وصولها إلى WordPress، بدلاً من عرض واجهة REST API مباشرةً لخدمات الطرف الثالث.

أتمتة الوسائط والصور المميزة

تحقق المنشورات بدون صور مميزة أداءً ضعيفًا في المشاركة الاجتماعية ونتائج البحث. يجب أن يتعامل النشر الآلي مع تحميل الوسائط بشكل موثوق.

تحميل الوسائط عبر REST API

تُرفع الصور بشكل منفصل عبر POST /wp-json/wp/v2/media قبل إرفاقها بمنشور. يتطلب الطلب:

  • بيانات الملف الثنائي مع Content-Disposition: attachment; filename="image.jpg" رأس، أو بيانات نموذج متعددة الأجزاء
  • upload_files صلاحية للحساب المصادق عليه
  • نوع وحجم الملف ضمن حدود الخادم

وفقًا لوثائق WordPress REST API، تكون عمليات التحميل مقيدة بواسطة توجيهات PHP (upload_max_filesize, post_max_size, memory_limit) وقوائم أنواع MIME المعتمدة في النواة. تُرجع أنواع الملفات غير المدرجة 400 Bad Request: rest_upload_file_type_invalid. ويمكن للمرشح upload_mimes توسيع الأنواع المسموح بها برمجيًا إذا كانت سير عملك تتطلب تنسيقات غير معتادة.

تعيين الصور المميزة تلقائيًا

بعد رفع الوسائط، ترجع الواجهة معرف المرفق. قم بتضمين هذا المعرف كـ featured_media في حمولة إنشاء أو تحديث المنشور:

{
  "title": "Automated Post with Image",
  "content": "Post body...",
  "status": "future",
  "date": "2026-10-10T09:00:00",
  "featured_media": 456
}

بالنسبة لخطوط المعالجة الآلية بالكامل، ضع في اعتبارك هذه الأنماط:

  • إنشاء صور مميزة على جانب الخادم باستخدام أدوات مثل PHP GD أو ImageMagick أو التقاط المتصفح بدون واجهة رسومية، ثم رفعها عبر الواجهة
  • جلب الصور البعيدة والتحقق منها، ورفعها إلى مكتبة وسائط WordPress، وإرفاقها بالمعرف
  • استخدام إضافات تعيّن الصور المميزة تلقائيًا من محتوى المنشور أو مصادر خارجية عند عدم تحديدها

تحقق دائمًا من تراخيص الصور عند الجلب من مصادر خارجية، وطبق منطق الاحتياط لعمليات الفشل لمنع نشر المنشورات دون مرئيات.

استكشاف أخطاء الأتمتة الشائعة وإصلاحها

يفشل النشر الآلي بطرق يمكن التنبؤ بها. والتشخيص المنهجي يحل معظم المشكلات بسرعة.

أخطاء الجدولة الفائتة

العرض: تظهر المنشورات "Missed schedule" بدلاً من نشرها. السبب: لم يقم WP-Cron بالتنفيذ في الوقت المطلوب. الحل: تنفيذ cron على مستوى الخادم كما هو موضح أعلاه، أو تثبيت إضافة لاستعادة الجدولة الفائتة.

رفض الإذن في طلبات واجهة برمجة التطبيقات (API)

العرض: استجابات 403 Forbidden من /wp-json/wp/v2/posts. الأسباب: صلاحيات الدور غير كافية، كلمة مرور التطبيق (Application Password) غير صحيحة، أو واجهة REST API معطلة. تحقق من أن دور المستخدم يمتلك صلاحية publish_posts وفقًا لوثائق قدرات WordPress، أعد إنشاء كلمة مرور التطبيق، وتأكد من عدم حجب rest_api_init بواسطة إضافات الأمان.

فشل تحميل الوسائط

العرض: خطأ 400 Bad Request أو 413 Payload Too Large عند نقطة نهاية الوسائط. الأسباب: نوع الملف غير مدرج في قائمة أنواع MIME المسموح بها، حجم الملف يتجاوز upload_max_filesize، أو قيمة post_max_size منخفضة جدًا. تحقق من إعدادات PHP، وتأكد من امتداد الملف مقابل الأنواع المسموحة، وفكر في استخدام الرفع المجزأ للملفات الكبيرة.

تعارضات الإضافات

العرض: تتصرف المنشورات المجدولة بشكل غير متوقع بعد تثبيت إضافة جديدة. السبب: تسجيل عدة إضافات لأحداث cron متضاربة أو تصفية إجراءات wp_insert_post . استخدم WP Crontrol لفحص الأحداث المسجلة، وعطل الإضافات بشكل منهجي، وتحقق من سجلات الأخطاء بحثًا عن أخطاء قاتلة أثناء تنفيذ cron.

تخطي WP-Cron بسبب التخزين المؤقت للصفحة الكاملة

العرض: لا يتم تشغيل أي أحداث cron رغم الإعداد الصحيح. السبب: تقدم Varnish أو Cloudflare أو التخزين المؤقت الثابت HTML دون الوصول إلى PHP. الحل: استبعاد wp-cron.php من قواعد التخزين المؤقت، أو التحول بالكامل إلى cron على مستوى الخادم.

الخطوات التالية لتدفق العمل الآلي الخاص بك

اختر مستوى الأتمتة المناسب بناءً على حجم المحتوى التحريري والموارد التقنية. يمكن للمدونين الأفراد الذين ينشرون أسبوعيًا الاعتماد على الجدولة الأصلية مع cron موثوق على الخادم. تستفيد فرق التحرير التي تدير عشرات المنشورات من SchedulePress أو إضافات التقويم المشابهة. يجب على فرق التطوير التي تبني خطوط إنتاج المحتوى الاستثمار في تكامل REST API مع مصادقة مناسبة، وتحقق عبر الوسيط (middleware)، وسجلات شاملة. للبدء بحل مُدار، تحقق من أسعارنا أو ابدأ مجانًا.

مشاركةXLinkedIn
Y

كتابة BlogTend

تولّى BlogTend إعداد موجز هذا المقال والبحث له وكتابته وتصميم صوره ونشره من البداية إلى النهاية — دون أي تدخل بشري في سير العمل.

ابدأ مجانًا

تابع القراءة

المزيد حول ووردبريس

جميع المقالات