ডায়নামিকভাবে ডাব্লুপি-কনফিগারেশন.এফপিতে অতিরিক্ত নেটওয়ার্ক কনস্ট্যান্ট যুক্ত করুন


10

একটি নতুন নেটওয়ার্ক ইনস্টল দিয়ে শুরু করার সময়, প্রথম পদক্ষেপটি একটি একক সাইট ইনস্টল যা wp-config.phpফাইলটিতে একটি অতিরিক্ত লাইন রয়েছে :

define( 'WP_ALLOW_MULTISITE', true );

এর পরে আমাদের যেতে হবে Tools > Network Setup, নেটওয়ার্কের নাম এবং সুপার অ্যাডমিন ইমেলের মতো কিছু বিশদ লিখুন এবং শেষ পর্যন্ত সেটআপটি চালানোর জন্য বোতামটি চাপুন।

পপস পরবর্তী পদক্ষেপটি আসলে দুটি ধাপ:

  1. যোগ অতিরিক্ত আপনার টু ধ্রুবক wp-config.phpফাইল

    define( 'MULTISITE', true );
    define( 'SUBDOMAIN_INSTALL', true );
    define( 'DOMAIN_CURRENT_SITE', 'example.com' );
    define( 'PATH_CURRENT_SITE', '/' );
    define( 'SITE_ID_CURRENT_SITE', true );
    define( 'BLOG_ID_CURRENT_SITE', true );
  2. আপনার .htaccessফাইলে কিছু বিধি যুক্ত করুন।

যেহেতু আমি একক সাইট ইনস্টল না করি (এর আর কোনও কারণ নেই), আমি আমার wp-config.phpফাইলটিতে এই ধ্রুবকগুলি গতিশীলভাবে যুক্ত করতে চাই :

define( 'WP_ALLOW_MULTISITE', true );
if ( SOME_CHECK_IF_STEP-1_WAS_PASSED )
{
    define( 'MULTISITE', true );
    define( 'SUBDOMAIN_INSTALL', true );
    define( 'DOMAIN_CURRENT_SITE', 'example.com' );
    define( 'PATH_CURRENT_SITE', '/' );
    define( 'SITE_ID_CURRENT_SITE', true );
    define( 'BLOG_ID_CURRENT_SITE', true );
}

সুতরাং আমাকে wp-config.phpপ্রতিটি বারে গিয়ে আবার সম্পাদনা করতে হবে না।

1 ম জিনিস যে আমার মন চলে আসে জন্য ডিবি চেক করতে ছিল {$wpdb->prefix}sitemetaটেবিল, কিন্তু আমি প্রতিটি সাইটের লোড একটি অতিরিক্ত ক্যোয়ারী করতে চাই না। 2nd জিনিস আমি চিন্তা যদি চেক করতে ছিল blogs.dirআগে থেকেই আছে, কিন্তু যে ক্ষেত্রে নয়।

প্রশ্ন: আমি কীভাবে ইঙ্গিত করতে পারি যে আমি ইতিমধ্যে নেটওয়ার্ক সেটআপের প্রথম ধাপটি এমনভাবে পেরিয়েছি যাতে বিশাল ওভারহেড না থাকে বা কার্যকারিতা হ্রাস পায় না।


2
: আপনি সবকিছু স্বয়ংক্রিয় চেষ্টা উচিত না i.imgur.com/OoF9Md7.png
Ünsal Korkmaz

1
এটি প্রকৃতপক্ষে অবিশ্বাস্য প্রক্রিয়াটি এখনও একইরকম রয়েছে এবং আরও বেশি সংখ্যক ডাব্লুপি ইনস্টলেশনটি মাল্টিসাইটে পরিণত হয়
জেমাউ

@ আনসালকর্মাজ যদি আপনি আমার কনফিগারেশন সেটআপটি দেখে থাকেন তবে বুঝতে পারবেন এটি কেবল আরও এক ধাপ এগিয়ে। পরবর্তী জিনিস: গ্রান্ট wp-configজেনারেটর।
কায়সার

আমি বুঝতে পারছি না কেন প্রতিটি পৃষ্ঠার লোডের জন্য কোনও শর্ত বিদ্যমান রয়েছে এবং তারপরে ধ্রুবকগুলি সংজ্ঞায়িত করতে আপনাকে কেন পরীক্ষা করতে হবে। আপনি একটি মাল্টিসাইট সেটআপ চালানোর সাথে আছেন বা আপনি নন। আপনি যদি ওয়ার্ডপ্রেস সেটআপটি স্বয়ংক্রিয়করণের কথা বলছেন তবে আপনি ইয়েপ্রেস github.com/wesleytodd/YooPress
কিংকুল 68

@ কিংকুল 68 সহজ কারণ আমি প্রতিবারই একটি নেটওয়ার্ক ইনস্টল সেটআপ করার পরে এই ধ্রুবকগুলিকে কোনরকম / মন্তব্য করতে চাই না। এটি কোনও ওভারহেড নয় এবং কেবল পদক্ষেপটি অপ্রয়োজনীয়। এবং না, আমি ডাব্লুপি সেটআপ স্বয়ংক্রিয় করার কথা বলছি না। বিটিডব্লিউ: ইয়োমন কাজের জন্য গ্রান্ট ব্যবহার করে (যা আমি উপরে উল্লেখ করেছি)।
কায়সার

উত্তর:


1

আমি এটি পরীক্ষা করেছি না, তবে আপনাকে যদি এই জাতীয় সমাধানের সন্ধান করতে হয় তবে আমি সম্ভবত if ( SOME_CHECK_IF_STEP-1_WAS_PASSED )উপরে বর্ণিত শর্তে একটি স্ক্রিপ্ট যুক্ত করে নিম্নলিখিত পদ্ধতিতে এটি করার চেষ্টা করব , যা হবে:

  • {$wpdb->prefix}sitemetaটেবিলের জন্য ডিবি চেক করুন ;
  • যদি এটি বিদ্যমান না থাকে -> মিথ্যা ফিরুন;
  • যদি এটি বিদ্যমান থাকে -> পুনর্লিখনের জন্য একটি ডাব্লুপি ক্রোন জব যুক্ত করুন wp-config.php-> সত্য ফিরে আসুন।

ডাব্লুপি ক্রোন কাজ wp-config.phpপুরোপুরি চেকটি অপসারণ করার জন্য পুনরায় লেখবে ।

এই পদ্ধতিতে, নেটওয়ার্ক সেটআপ না হওয়া এবং ক্রোন জব তার যাদু না করা পর্যন্ত আপনার কেবলমাত্র একটি অতিরিক্ত ডিবি অনুরোধ রয়েছে।

নিশ্চিত করুন যে এটি চেষ্টাটির পক্ষে উপযুক্ত, যদিও ...;)


বিটিডাব্লু, স্ক্রিপ্টটি সরাসরি ফাইলটি পরিবর্তন করতে পারেwp-config.php তবে আমি মনে করি যে এটি তখনই লক হয়ে যাবে ...
আলাইন স্ক্লেসার

সেই ক্রোন জব আইডিয়া মজাদার :) এর জন্য ধন্যবাদ। বিটিডব্লিউ, আপনি নিজের উত্তরটি সম্পাদনা করতে পারেন ।
কায়সার

-1

পরিদর্শন করুন wp-admin/network.phpএবং wp-admin/includes/schema.phpফাইল। আপনি WP_INSTALLING_NETWORK এর ভিত্তিতে একটি শর্ত তৈরি করতে পারেন

হালনাগাদ:

if (is_admin()){
    /* First Step */
    if (!defined( 'WP_ALLOW_MULTISITE')){
            $current_wp_config = file_get_contents(ABSPATH . 'wp-config.php');

            $my_defines = "/* First we put WP_ALLOW_MULTISITE  */\r\n" .
                    "define('WP_ALLOW_MULTISITE', true); \r\n";

            $current_wp_config = str_replace("/* That's all, stop editing", $my_defines . "/* That's all, stop editing", $current_wp_config);       
            file_put_contents(ABSPATH . 'wp-config.php', $current_wp_config);   
    }   
    /* Second Step */
    if (!defined("WP_DEFINES_IMPORTED") && defined("WP_INSTALLING_NETWORK") && $_POST){
        $current_wp_config = file_get_contents(ABSPATH . 'wp-config.php');

        $my_defines = "/* Now we define */\r\n" .
            "define('WP_DEFINES_IMPORTED', true); \r\n" .
            "define('MULTISITE', true); \r\n".
            "define('SUBDOMAIN_INSTALL', true); \r\n".
            "define('DOMAIN_CURRENT_SITE', '". get_clean_basedomain() . "'); \r\n".
            "define('PATH_CURRENT_SITE', '". parse_url(  trailingslashit( get_option( 'home' ) ), PHP_URL_PATH ) . "'); \r\n".
            "define('SITE_ID_CURRENT_SITE', 1); \r\n".
            "define('BLOG_ID_CURRENT_SITE', 1); \r\n";

        $current_wp_config = str_replace("/* That's all, stop editing", $my_defines . "/* That's all, stop editing", $current_wp_config);       
        file_put_contents(ABSPATH . 'wp-config.php', $current_wp_config);   
    }
}
  1. এটি মু-প্লাগইন ফোল্ডারে রাখুন।
  2. টাটকা WP ইনস্টল
  3. অ্যাডমিন প্যানেলে যান
  4. সরঞ্জাম ক্লিক করুন
  5. নেটওয়ার্ক সেটআপ ক্লিক করুন
  6. সেটআপ চালান
  7. ???
  8. মুনাফা !!!

এখানে চিত্র বর্ণনা লিখুন


আমি ইতিমধ্যে এটি পরীক্ষা করেছিলাম। পয়েন্টটি হ'ল আগে যে wp-load.phpটানছে wp-config.phpতাই WP_INSTALLING_NETWORKসংজ্ঞায়িত করা হবে না। এটি উপলব্ধ থাকলেও এটি কেবল নেটওয়ার্ক সেটআপের সময় উপলব্ধ। ইনস্টলেশন চলার পরে ধ্রুবকগুলি ছেড়ে যেতে আমি কী করব ?
কায়সার

না .. আপনার একবার একটি ফাংশন ব্যবহার করা উচিত এবং আপনার সংজ্ঞাগুলি একবার wp-config.php ফাইলটিতে লিখতে হবে। আপনি এটি
रजिस्टर_অ্যাক্টিভেশন_হুক

index.phpটান ./wp-blog-header.php), যা পরে টান wp-load.phpএবং সেখান থেকে wp-config.phpবলা হয়। একটি ওভারভিউ এখানে পাওয়া যাবেadmin.phpনিজেই আগে কল হয়ে যায় setup.phpএবং network.php(এবং wp-load.phpশুরুতে নিজেকে কল করে) তাই কনফিগারেশনটি ইতিমধ্যে চলছে।
কায়সার

এবং হিসাবে WP_INSTALLING_NETWORKপায় define()চেক যদি এটা আগে থেকেই থাকলে defined(), আমি একটি তৈরি করবে Fatal Errorনা। দয়া করে আমাকে ভুল প্রমাণ করুন এবং এটি পরীক্ষা দিন। :)
কায়সার

2
না ইনসাল, আমি নই। এমনকি আমি এই বিষয়টিকেও উপেক্ষা করছি যে আমি উপরের টপিক কমিক স্ট্রিপটিকে ট্রোলিং বা কেবল অভদ্র হিসাবে নিতে পারি। আমি একটি সমাধান খুঁজছি। সময়কাল। তবে একটি লিখনযোগ্য wp-config.phpফাইল থাকা একটি সুরক্ষা ঝুঁকি। আপনি সেখানে সমস্ত গুরুত্বপূর্ণ বিশদ পেয়েছেন তা বিবেচনা করুন। আমি আপনাকে দেখিয়েছি যে এটির কোনও উপায় নেই (লিখিত কনফিগার ফাইল না থাকলে) work আমি যা অনুসন্ধান করছি তা এমন একটি সূচক (যা সিস্টেমকে ধীর করে না) যা আমি এর বিরুদ্ধে যাচাই করতে পারি এবং সুইচ হিসাবে ব্যবহার করতে পারি। বাকি সব কাজ করবে না।
কায়সার

-1

যদি আপনার সেটআপটি প্রতিবার একই হয় (সাবডোমেন ইনস্টল), তবে আপনি আপনার প্রথম পদক্ষেপে পুরো অংশটি পেস্ট করতে সক্ষম হতে পারেন:

define( 'MULTISITE', true ); define( 'SUBDOMAIN_INSTALL', true ); define( 'DOMAIN_CURRENT_SITE', $_SERVER[ 'HTTP_HOST' ] ); define( 'PATH_CURRENT_SITE', '/' ); define( 'SITE_ID_CURRENT_SITE', true ); define( 'BLOG_ID_CURRENT_SITE', true );


আপনি যেমন প্রশ্নে দেখতে পারেন, আমি প্রয়োজনীয় ধ্রুবক সম্পর্কে যথেষ্ট সচেতন। সেটআপটি ইতিমধ্যে যদি পদক্ষেপ 1 অতিক্রম করে থাকে তবে আমি যা অনুসন্ধান করছি তা নির্ভরযোগ্য সূচক else নীচে হাইলাইট করা আসল প্রশ্নটি দয়া করে দেখুন। আপনার প্রচেষ্টার জন্য ধন্যবাদ।
কায়সার

আমার উত্তরটি ছিল আপনার এমনকি সূচকটি আদৌ দরকার কিনা তা চ্যালেঞ্জ জানানো, বরং DOMAIN_CURRENT_SITEঅভ্যন্তরীণ সেটআপ শেষ করার পরে ওয়ার্ডপ্রেস আপনাকে যে সঠিক ধ্রুবক দেয় তা পরিবেশন করতে সার্ভার ভেরিয়েবলের উপর নির্ভর করুন ।
জেফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.