@ টম-জে-নওল যেমন ওপিকে মন্তব্যে বলেছিলেন, মাল্টিসাইট এটিকে সহজ করে তুলতে পারে।
পারফরম্যান্স এবং সুরক্ষা আসলেই মাল্টিসাইটের জন্য সমস্যা নয় (কমপক্ষে, তারা নিয়মিত ইনস্টলেশনগুলির চেয়ে বেশি নয়) তবে আমি একমত যে মাল্টিসাইট কখনও কখনও সমস্যা হতে পারে, কারণ প্রচুর প্লাগইন (কাস্টম বা তৃতীয় পক্ষ) নাও পারে মাল্টিসাইটে সঠিকভাবে কাজ করুন বা আপনি বিভিন্ন ওয়েবসাইটের ব্যবহারকারীদের সম্পূর্ণ পৃথক রাখতে চান বলে।
এটি বলেছে যে আপনি যা অর্জন করতে চান তা এত কঠিন নয়।
ইনস্টলেশনের মধ্যে আপনাকে যা পরিবর্তন করতে হবে তা হ'ল:
- প্লাগইন ফোল্ডার
- থিম ফোল্ডার
- ডাটাবেস সেটিংস
এই কনফিগারেশনটি আপনার একমাত্র সমস্যায় ধ্রুবকwp-config.php
ব্যবহার করে করা যেতে পারে তা হল ইউআরএল-এর উপর ভিত্তি করে সেগুলি কীভাবে স্যুইচ করা যায়।
সার্ভার ভেরিয়েবলটি 'SERVER_NAME'
আপনার জন্য কাজ করা উচিত, যদি কমপক্ষে আপনার ওয়েবসারভারটি সঠিকভাবে কনফিগার করা থাকে।
উদাহরণস্বরূপ, আপনি ফাইল এবং ফোল্ডারের /conf
একই স্তরের নামযুক্ত একটি ফোল্ডার তৈরি করতে পারেন ।wp-config.php
/WordPress
সেই ফোল্ডারে আপনি কয়েকটি ফাইল যুক্ত করতে পারেন:
branch1.domain.com.conf
branch2.domain.com.conf
branch3.domain.com.conf
তাদের প্রত্যেকের ভিতরে আপনি যেমন কিছু করতে পারেন
$branch = 'branch1';
$base_dir = dirname( __DIR__) . "/{$branch}";
defined( 'WP_CONTENT_DIR' ) or define( 'WP_CONTENT_DIR', $base_dir );
// be sure WP understand URLs correctly
defined( 'DB_HOME' ) or define( 'DB_HOME', "{$branch}.example.com" );
defined('WP_SITEURL') or define('WP_SITEURL', "{$branch}.example.com/WordPress");
// adjust DB settings as needed
defined( 'DB_NAME' ) or define( 'DB_NAME', $branch );
defined( 'DB_USER' ) or define( 'DB_USER', $branch );
defined( 'DB_PASSWORD' ) or define( 'DB_PASSWORD', '********' );
unset( $base_dir, $branch );
এটি "ব্রাঞ্চ" অনুযায়ী প্রতিটি কনফিগারেশন ফাইলে পরিবর্তিত হবে।
এর পরে, আপনার অনন্যতে wp-config.php
আপনি এমন কিছু করতে পারেন:
$defaults_conf = [
'WP_CONTENT_DIR' => __DIR__ . '/branch1',
'DB_HOST' => 'localhost',
'DB_NAME' => 'branch1',
'DB_USER' => 'branch1',
'DB_PASSWORD' => '********',
];
$host = getenv('WORDPRESS_HOST') ?: $_SERVER['SERVER_NAME'];
if ($host && file_exists(__DIR__."/conf/{$host}.conf")) {
require __DIR__."/conf/{$host}.conf";
}
array_walk($defaults_conf, function($value, $name) {
defined($name) or define($name, $value);
});
unset($defaults_conf, $host);
উপরে যা ঘটে তা হ'ল সার্ভার নামের উপর ভিত্তি করে আপনি একটি আলাদা কনফিগারেশন ফাইল লোড করেন (যদি পাওয়া যায়) এবং যদি কনফিগারেশন ফাইল কোনও ডিফল্ট কনফিগারেশন (বা ফাইলটি না পাওয়া যায়) এর জন্য ডিফল্ট হিসাবে সেট থাকে।
সুন্দর জিনিসটি হল একটি নতুন শাখা যুক্ত করার জন্য, আপনাকে কেবল শাখা ফোল্ডার তৈরি করতে হবে এবং .conf
নতুন শাখা ডোমেনের নামে একটি নাম সরবরাহ করতে হবে, এবং আপনার কাজ শেষ হয়েছে, ডাব্লুপি পার্শ্ব পরিবর্তন করার কিছুই নেই।
লাইন:
$host = getenv('WORDPRESS_HOST') ?: $_SERVER['SERVER_NAME'];
আমি ডোমেন নাম পাই যেখানে। প্রথম বিকল্প হিসাবে আমি এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করছি, কারণ $_SERVER['SERVER_NAME']
ডাব্লুপি সিএমআই ব্যবহার করার সময় কমান্ড লাইন প্রসঙ্গে যেমন কাজ করার সম্ভাবনা থাকে না তেমনি আমাদেরও থাকে। এই পরিস্থিতিতে আপনি WP কে নির্দিষ্ট শাখা থেকে সেটিংস ব্যবহার করতে বাধ্য করতে একটি পরিবেশের পরিবর্তনশীল সেট করতে পারেন।
নোট করুন যে শাখা-নির্দিষ্ট কনফিগারেশন ফাইলগুলিতে আমি পরিবর্তন করছি WP_CONTENT_DIR
এবং এটি স্বয়ংক্রিয়ভাবে সম্পর্কিত /plugins
এবং /themes
শাখা সাবফোল্ডারগুলিতে প্লাগইন এবং থিম ফোল্ডার সেট করবে ।
এখানে সম্ভাব্য সমস্যাটি হ'ল যদি আপনি /uploads
ফোল্ডারটি ভাগ করতে চান (যেখানে ফাইলগুলি আপলোড হয়)।
ডিফল্টরূপে সেই ফোল্ডারটি বিষয়বস্তু ডিয়ারের একটি সাবফোল্ডার, সুতরাং এটির উপরে ওয়ার্কফ্লো ব্যবহার করা /uploads
প্রতিটি শাখার রুট ফোল্ডারের একটি সাবফোল্ডার হবে ।
যদি এটি আপনার জন্য একটি সমস্যা, চেয়ে শুধু এটার সাথে যাও, অন্যথায় সহজ সমাধান করতে হবে নয় /uploads
করার জন্য একটি সিমবলিক লিঙ্ক ফোল্ডারের প্রতিটি শাখায় বাস্তব আপলোড আপনি যে ফোল্ডারটি শেয়ার করতে চাই।