অস্থায়ী রক্ষণাবেক্ষণ পৃষ্ঠায় দর্শকদের পুনর্নির্দেশ করুন


13

রক্ষণাবেক্ষণকালে আমার সাইটের কোনও ভাঙা সংস্করণ দেখতে আমার দর্শকদের আটকাতে এবং আপডেটগুলিতে তাদের মাথা তুলে দেওয়ার জন্য, আমি তাদের অস্থায়ী রক্ষণাবেক্ষণ পৃষ্ঠায় স্বয়ংক্রিয়ভাবে পুনঃনির্দেশ করতে চাই। আমি একটি পোর্টেবল সমাধান খুঁজছি যা কোনও ইউআরএল হার্ডকডিং ছাড়াই যে কোনও সাইটে ব্যবহার করা যেতে পারে।

প্রশাসকগুলিতে লগইন করা (বা পছন্দ মতো অন্যান্য ব্যবহারকারী স্তরের) ব্যাক-এন্ড এবং ফ্রন্ট-এন্ডে সম্পূর্ণ অ্যাক্সেস পাওয়া উচিত। এখানে অনেকগুলি প্লাগইন রয়েছে যা এই কার্যকারিতাটি সরবরাহ করে তবে আমি একটি কোড-সমাধান সমাধান খুঁজছি।


একটি প্লাগইন থেকে কোড অনুলিপি?
মার্ক কাপলুন

চাকা পুনরুদ্ধার কেন? একটি প্লাগইন ব্যবহার করুন। বিশেষত, সীমাবদ্ধ সাইট অ্যাক্সেস।
ভ্যানকোডার

2
আমি আমার কাস্টম থিমের জন্য যথাসম্ভব কম প্লাগইন ব্যবহার করার চেষ্টা করি। "কম আরও বেশি";)
নিউ ইউজার

উত্তর:


24

ওয়ার্ডপ্রেস রক্ষণাবেক্ষণ মোড পরিচালনা করার জন্য একটি এম্বেড বৈশিষ্ট্য রয়েছে।

আপনি যখন ডাব্লুপি ড্যাশবোর্ড থেকে প্লাগইন বা ওয়ার্ডপ্রেস কোর আপগ্রেড করেন, তখন ওয়ার্ডপ্রেস রক্ষণাবেক্ষণ মোডে প্রবেশ করে: এটি maintenance.phpকনটেন্ট ফোল্ডারে অবস্থিত একটি ফাইল লোড করার চেষ্টা করে (সাধারণত /wp-content), এবং যদি সেই ফাইলটি না থাকে, ডাব্লুপি একটি ডিফল্ট বার্তা দেখায়।

আমি আপনাকে সেই ফাইলটি ব্যবহার করার পরামর্শ দিচ্ছি, এইভাবে আপনি আপনার ম্যানুয়ালি ট্রিগারযুক্ত রক্ষণাবেক্ষণ এবং ওয়ার্ডপ্রেস পরিচালিত রক্ষণাবেক্ষণের জন্য সামঞ্জস্য বজায় রাখবেন।

কিভাবে

  1. প্রথমে maintenance.phpফাইলটি তৈরি করুন এবং আপনার পছন্দসই সামগ্রীটি সেখানে রাখুন। স্টাইলিংয়ের জন্য আমি আপনাকে <style>ট্যাগ ব্যবহার করে ফাইলটিতে সিএসএস লাগানোর পরামর্শ দিই ; সাধারণত এটি ভাল পরামর্শ নয়, তবে এই ক্ষেত্রে আপনাকে ওয়ার্ডপ্রেস-পরিচালিত রক্ষণাবেক্ষণ মোডের জন্য ফাইলটি ব্যবহার করার ক্ষমতা দেয়, যখন কোনও থিম লোড হয় না (এবং থিমটি আপগ্রেড হতে পারে, সুতরাং নির্ভরযোগ্য নয়)।

  2. সবে তৈরি করা ফাইল সংরক্ষণ করুন কনটেন্ট ফোল্ডারে (সাধারণত /wp-content)।

  3. আপনার কথায় functions.php:

    add_action( 'wp_loaded', function() {
        global $pagenow;
        if(
            defined( 'IN_MAINTENANCE' )
            && IN_MAINTENANCE
            && $pagenow !== 'wp-login.php'
            && ! is_user_logged_in()
        ) {
            header( 'HTTP/1.1 Service Unavailable', true, 503 );
            header( 'Content-Type: text/html; charset=utf-8' );
            header( 'Retry-After: 3600' );
            if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {
                require_once( WP_CONTENT_DIR . '/maintenance.php' );
            }
            die();
        }
    });
    

    এই কোডটি একটি ধ্রুবক পরীক্ষা করবে (পরবর্তী পয়েন্টটি দেখুন) এবং যদি ব্যবহারকারী লগ ইন না করে থাকেন তবে পয়েন্ট # 1-এ নির্মিত ফাইলটি লোড করুন এবং প্রস্থান করবেন।

    আপনি যদি সুনির্দিষ্ট ক্ষমতা সম্পন্ন ব্যবহারকারীদের অনুমতি দিতে চান তবে current_user_can('capability_to_allow')পরিবর্তে ব্যবহার করুন is_user_logged_in()। আরও তথ্যের জন্য কোডেক্স দেখুন ।

    হতে পারে আপনি maintenance.phpলগইন পৃষ্ঠায় একটি লিঙ্কে যুক্ত করতে পারেন ; এইভাবে কোনও অ-লগ করা ব্যবহারকারী এড্রেস বারে ম্যানুয়ালি লগইন ইউআরএল না করে এটিকে ক্লিক করতে পারে।

    আপনি যদি কোনও তৃতীয় পক্ষ দ্বারা বিকাশ করা থিম ব্যবহার করছেন তবে চাইল্ড থিম ব্যবহার করুন ; এইভাবে আপনি আপনার পরিবর্তনগুলি না হারিয়ে থিমটি নিরাপদে আপডেট করতে সক্ষম হবেন।

  4. আপনি যখন রক্ষণাবেক্ষণ মোড সক্ষম করতে চান তখন আপনার খুলুন wp_config.phpএবং সেখানে রাখুন:

    define('IN_MAINTENANCE', true);

    এর পরে, আপনি যখন নিজের সাইটটিকে আবার সর্বজনীন করতে প্রস্তুত হবেন, কেবল সেই লাইনটি সরিয়ে দিন বা পুনরায় সক্ষম trueকরার falseজন্য আরও সহজে পরিবর্তন করুন ।


এটি একটি খুব বিস্তারিত উত্তর এবং যতটা সম্ভব কম চেষ্টা করে আমার সমস্যা সমাধানের দুর্দান্ত উপায়! আমি পরে এটি চেষ্টা করব এবং যদি এটি কাজ করে তবে উত্তরটি গ্রহণ করব। আপনাকে অনেক ধন্যবাদ জিএম!
নিউ ইউজার

হাই জিএম - আমি "ডাব্লুপি-কনটেন্ট" ডিরেক্টরি নামের একটি কাস্টম ব্যবহার করি তবে কীভাবে ডাব্লুপি_সিএনটিআইডিআইআর ..... এটি কার্যকর করতে হয় তা কীভাবে পরিবর্তন করবেন তা আমার কোনও ধারণা নেই? সেরা
নিউ ইউজার

পুরানো থ্রেড, আমি জানি .. তবে কারও যদি উত্তরটির প্রয়োজন হয় তবে এটি define('WP_CONTENT_DIR','/url/to/define/');আপনার wp-config.phpফাইলে যুক্ত করার মতোই সহজ ।
gmo

@ গাজাজাপ, এটি আশ্চর্যজনক। এর অর্থ কি এই যে এবং যদি আপনি ইতিমধ্যে লগইন হয়ে থাকেন (প্রশাসক হিসাবে বলুন), আপনি এখনও প্রশাসক কনসোলে / এ অ্যাক্সেস এবং পরিবর্তন করতে পারবেন?
পরানজা

@ পারঞ্জা হ্যাঁ, ঠিক আছে।
গাজাজ্যাপ

2

পূর্ববর্তী উত্তরটি সম্পূর্ণ এবং ভাল লেখা is যাইহোক আপনি যদি আমার মত হন এবং আপনি সবকিছু এক জায়গায় রাখতে চান তবে আপনি function.phpফাইলটিতে নিম্নলিখিত লাইনগুলি ফেলে দিতে পারেন maintenance.phpএবং আপনার থিম ডিরেক্টরিতে একটি ফাইল তৈরি করতে পারেন ।

এটি বিশেষত কার্যকর যদি আপনার গিট সংগ্রহস্থল কেবল থিম ডিরেক্টরিতে নির্দেশ করে।

add_action( 'wp_loaded', function() 
{
    global $pagenow;

    // - - - - - - - - - - - - - - - - - - - - - - 
    // Turn on/off you Maintenance Mode (true/false)
    define('IN_MAINTENANCE', true);
    // - - - - - - - - - - - - - - - - - - - - - - 

    if(
        defined( 'IN_MAINTENANCE' )
        && IN_MAINTENANCE
        && $pagenow !== 'wp-login.php'
        && ! is_user_logged_in()
    ) {
        header('HTTP/1.1 503 Service Temporarily Unavailable');
        header( 'Content-Type: text/html; charset=utf-8' );
        if ( file_exists( get_template_directory() . '/maintenance.php' ) ) {
            require_once( get_template_directory() . '/maintenance.php' );
        }
        die();
    }
});

মন্তব্য

উপরেরটি header('HTTP/1.1 503 Service Temporarily Unavailable');আমার পক্ষে কাজ না করায় আমি শিরোনাম পরিবর্তন করেছি।


আমি এর বিন্দুটি দেখতে পাচ্ছি, তবে কয়েকটি জিনিস নোট করতে পারি - ওয়ার্ডপ্রেস থিম স্যারের মধ্যে এই রক্ষণাবেক্ষণ ফাইলটি নিজস্ব রক্ষণাবেক্ষণ করার সময় ব্যবহার করবে না (তাই ডাব্লুপি-কনটেন্ট / রক্ষণাবেক্ষণ.এফপি হিসাবে তৈরি করা ভাল ধারণা হবে) ভাল এবং তারপরে () আপনার থিমটি এর মধ্যে একটি প্রয়োজন); কমেন্টস করার মাধ্যমে রক্ষণাবেক্ষণ মোডটি চালু / বন্ধ রাখার পরিবর্তে সাধারণত আপনার ডাব্লুপি-কনফিগারেশন.এফপি বা পরিবেশ পরিবর্তনশীল হিসাবে বসার মতো ধ্রুবকগুলির সংজ্ঞা দেওয়া হয়। :)
টিম ম্যালোন

@ টিমম্যালোন, আমি সম্মতি দিচ্ছি না। শেষে এটি কার্যকরভাবে কাজ করবে যা স্বল্প সময়ের জন্য ভাল কাজ করবে, যখন আপনি (বিকাশকারী) সমস্ত আপডেট করবেন।
a.barbieri
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.