تخطَّ إلى المحتوى

نصائح وحيل

حيلة: صفحة «قريبًا» أو «تحت الصيانة» احترافية بدون أي إضافة

قراءة في 3 دقائق

حيلة: صفحة «قريبًا» أو «تحت الصيانة» احترافية بدون أي إضافة

إضافات «Coming Soon» بتضيف قالبًا كاملًا ومكتبات جافاسكربت عشان تعرض صفحة واحدة. البديل: كود صغير في القالب الابن يعرض صفحة أنيقة بالعربي، يسمح لك بالعمل في لوحة التحكم طبيعيًا، ويرسل لمحركات البحث الكود الصحيح.

لماذا كود 503 مهم؟

لو عرضت صفحة الصيانة بكود 200 (ناجح)، فجوجل يفهم إن محتوى موقعك صار «صفحة صيانة» ويبدأ في إزالة صفحاتك من الفهرس. الكود 503 Service Unavailable مع رأس Retry-After يقول: «الموقع موجود، عد لاحقًا». هذا الفرق يحفظ ترتيبك.

الكود

php
/**
 * وضع الصيانة الخفيف — يوضع في functions.php للقالب الابن أو كإضافة MU
 * للتفعيل: define( 'MIRROR_MAINTENANCE', true ); في wp-config.php
 * المديرون المسجّلون يرون الموقع طبيعيًا.
 */
add_action( 'template_redirect', function () {
    if ( ! defined( 'MIRROR_MAINTENANCE' ) || ! MIRROR_MAINTENANCE ) {
        return;
    }
    if ( current_user_can( 'manage_options' ) || is_admin() || wp_doing_cron() ) {
        return;
    }
    // اسمح بصفحة الدخول والـ AJAX وواجهة REST
    $uri = $_SERVER['REQUEST_URI'] ?? '';
    if ( strpos( $uri, 'wp-login.php' ) !== false || strpos( $uri, '/wp-json/' ) !== false || wp_doing_ajax() ) {
        return;
    }

    status_header( 503 );
    header( 'Retry-After: 3600' );
    nocache_headers();
    ?>
    <!doctype html>
    <html lang="ar" dir="rtl">
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title><?php bloginfo( 'name' ); ?> — قريبًا</title>
      <style>
        body{margin:0;min-height:100vh;display:grid;place-items:center;font-family:system-ui,-apple-system,"Segoe UI",Tahoma,sans-serif;background:radial-gradient(900px 500px at 80% -10%,#7c3aed33,transparent),linear-gradient(160deg,#0b1220,#101a33);color:#e2e8f0;text-align:center;padding:24px}
        .box{max-width:560px}
        h1{font-size:clamp(28px,5vw,44px);margin:0 0 12px;color:#fff}
        p{font-size:18px;line-height:1.8;color:#94a3b8;margin:0 0 24px}
        a{display:inline-block;background:#fff;color:#2563eb;font-weight:800;padding:12px 28px;border-radius:999px;text-decoration:none}
        .dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#4ade80;margin-inline-end:8px;box-shadow:0 0 0 0 #4ade80;animation:p 2s infinite}
        @keyframes p{70%{box-shadow:0 0 0 10px transparent}}
      </style>
    </head>
    <body>
      <div class="box">
        <p><span class="dot"></span>نعمل على شيء جديد</p>
        <h1><?php bloginfo( 'name' ); ?></h1>
        <p>الموقع تحت التطوير حاليًا وسيعود خلال ساعات. للاستفسارات تواصل معنا على واتساب.</p>
        <a href="https://wa.me/2010XXXXXXXX">تواصل عبر واتساب</a>
      </div>
    </body>
    </html>
    <?php
    exit;
} );

كيف تفعّله وتوقفه

  1. 1

    أضف الكود

    في functions.php للقالب الابن، أو الأفضل كملف مستقل في wp-content/mu-plugins/maintenance.php حتى يعمل بغض النظر عن القالب.

  2. 2

    فعّل الوضع

    في wp-config.php أضف: define( 'MIRROR_MAINTENANCE', true );

  3. 3

    تحقق

    افتح الموقع من متصفح خاص (بدون تسجيل دخول). يجب أن ترى الصفحة، وفي أدوات المطوّر ← Network الكود 503.

  4. 4

    أوقفه

    غيّر القيمة إلى false أو احذف السطر. لو عندك إضافة كاش، امسح الكاش بعدها.

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

تخصيصات سريعة

  • عدّاد تنازلي: أضف سطرًا بتاريخ الإطلاق وبضعة أسطر جافاسكربت تحسب الفرق.
  • السماح لعنوان IP معيّن: أضف if ( $_SERVER['REMOTE_ADDR'] === '1.2.3.4' ) return; لعرض الموقع لعميلك بدون حساب.
  • نموذج بريد: ضع شورت كود نموذج بسيط أو رابط لقناة واتساب لجمع المهتمين قبل الإطلاق.
  • الشعار: استبدل اسم الموقع بصورة الشعار من get_custom_logo().

بتجهّز لإطلاق موقع جديد؟

من الفكرة لأول عملية بيع: تصميم، تطوير، صفحة قريبًا تجمع العملاء المهتمين، وخطة إطلاق — مع فريق Mirror ORG.

ابدأ مشروعك

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *