پرش به محتویات

"Filter: bricks/maintenance/should_apply"

از این فیلتر (@since 2.0) برای لغو اینکه آیا حالت تعمیر و نگهداری باید برای درخواست فعلی اعمال شود یا خیر استفاده کنید.

به‌طور پیش‌فرض، Bricks بررسی می‌کند که آیا کاربر در بخش مدیریت یا سازنده است، آیا صفحه فعلی صفحه ورود است، آیا کاربر می‌تواند تعمیر و نگهداری را دور بزند یا اینکه پست فعلی در لیست حذف شده است.

این فیلتر بعد از گذراندن همه آن بررسی ها اجرا می‌شود و به شما فرصتی نهایی می‌دهد تا قبل از نمایش صفحه نگهداری یا به زودی، منطق سفارشی را اعمال کنید.

Parameters:

  • $apply_maintenance (bool): آیا حالت نگهداری باید اعمال شود یا خیر. پس از گذراندن همه بررسی‌های اصلی، پیش‌فرض true می‌شود.
  • $mode (رشته): حالت نگهداری فعلی. یا 'maintenance' یا 'coming_soon'.

Return:

  • (bool): true برای اعمال حالت نگهداری، false برای دور زدن آن.

Example Usage:

در مثال زیر، هر کسی که preview_key صحیح را در URL داشته باشد (به عنوان مثال https://domain.com?preview_key=letmein123) حالت تعمیر و نگهداری را دور می‌زند. این به ویژه برای به اشتراک گذاری یک پیش نمایش زنده با مشتریان یا همکاران بدون نیاز به دسترسی به ورود مفید است.

add_filter( 'bricks/maintenance/should_apply', function( $apply_maintenance, $mode ) {
    $valid_key = 'letmein123';

    // Bypass maintenance mode if a valid preview key is present in the URL
    if ( isset( $_GET['preview_key'] ) && $_GET['preview_key'] === $valid_key ) {
        return false;
    }

    // Keep default behavior for all other cases
    return $apply_maintenance;
}, 10, 2 );

نسخه بهبود یافته با ماندگاری کوکی:

می‌توانید این رفتار را با تداوم دسترسی پیش‌نمایش در بارگیری‌های صفحه با استفاده از یک کوکی، بیشتر بهبود بخشید. در غیر این صورت، کاربر فقط در اولین صفحه ای که بازدید می‌کند (جایی که کلید در URL موجود است) از تعمیر و نگهداری عبور می‌کند و هنگام پیمایش در جای دیگر دوباره مسدود می‌شود.

add_filter( 'bricks/maintenance/should_apply', function( $apply_maintenance, $mode ) {
    $valid_key   = 'letmein123';
    $cookie_name = 'bricks_preview_key';

    // Check preview key in URL
    if ( isset( $_GET['preview_key'] ) && $_GET['preview_key'] === $valid_key ) {
        // Set a cookie for 1 hour
        setcookie( $cookie_name, $valid_key, time() + HOUR_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN );
        return false;
    }

    // Check cookie on subsequent requests
    if ( isset( $_COOKIE[ $cookie_name ] ) && $_COOKIE[ $cookie_name ] === $valid_key ) {
        return false;
    }

    return $apply_maintenance;
}, 10, 2 );