আমি কীভাবে কোনও ওয়ার্ডপ্রেস ডাটাবেস পোর্টেবল এবং ইউআরএল স্বাধীন করতে পারি?


9

সমস্যা

আমি একাধিক ব্যক্তি দলের পরিবেশে কিছু ওয়ার্ডপ্রেস বিকাশ শুরু করতে চলেছি। (এক সাথে একই কোডবেসে কাজ করা 3 বা ততোধিক লোক, প্রতিটি স্থানীয়ভাবে বিকাশ করে)

অন্যান্য সিএমএসের সাথে আমরা কাজ করেছি, সবাই একই ডাটাবেসে তাদের ইনস্টলগুলি ইঙ্গিত করেছে এবং যেভাবে সিএমএস / ডাটাবেস কাজ করেছে, তার অর্থ আমরা সকলেই আমাদের ইনস্টলগুলিতে (ভিন্ন ভিন্ন ইউআরএলগুলিতে অবস্থিত) একই কন্টেন্ট সরবরাহ করতে পারি অনেক ইস্যু ছাড়াই একই ডাটাবেস (মাঝে মাঝে আপলোড ফোল্ডারগুলি সিঙ্ক করা ব্যতীত)

আমার প্রশ্ন, ওয়ার্ডপ্রেস সহ, আমাদের কী একই একই পদ্ধতির ব্যবহার থেকে বাধা দেয় এবং আমরা কীভাবে এই সমস্যাগুলি সমাধান করতে পারি?

যেমন। ওয়ার্ডপ্রেসের তিনটি অনুলিপি একই ডাটাবেসের বাইরে চলেছে।

http: //dev.local/developer-a/
http: //dev.local/developer-b/
http: //dev.local/developer-c/

ইত্যাদি

আমি আশা করি এটি লঞ্চের আগে কেবলমাত্র একটি পরিবেশের পরিবেশে থাকবে তা বলার অপেক্ষা রাখে না।

প্রধান বিষয়

  1. ডাটাবেসের মধ্যে নির্দিষ্ট url- এর উল্লেখ ( wp_postsএবং wp_optionsটেবিলগুলি মনে হয়)
  2. যদি কোনও ব্যক্তি একটি প্লাগইন ইনস্টল করেন, অন্য ইনস্টলগুলিতে এটি থাকবে না এবং এটি ডেটাবেজে সম্মতিযুক্ত সমস্যা তৈরি করবে
  3. আপলোড ফোল্ডারগুলি সিঙ্কে রাখছে

বর্তমান সমাধান

বর্তমানে আমার কাছে প্রথম সমস্যার সমাধানের সূচনা রয়েছে। আমি আমার মি-প্লাগিন ফোল্ডারে একটি ফাইলে নিম্নলিখিতটি রাখি।

কোডটি ইউএসএলের কোনও উদাহরণকে একটি অনন্য টোকেন দিয়ে প্রতিস্থাপন করে ডাটাবেসের বাইরে যাওয়ার সাথে সাথে পোস্ট সামগ্রীটি ফিল্টার করে।

<?php

define('PORTABILITY_TOKEN', '{_portable_}');

function portability_remove_home($content)
{
    $content = str_replace(get_option('home'), PORTABILITY_TOKEN, $content);

    return $content;
}

add_filter('content_save_pre', 'portability_remove_home');

function portability_add_home($content)
{
    $content = str_replace(PORTABILITY_TOKEN, get_option('home'), $content);

    return $content;
}

add_filter('the_content', 'portability_add_home');
add_filter('the_editor_content', 'portability_add_home');

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

<?php
if (!defined('WP_HOME'))
{
    // define WP_HOME (aka url of install) based on environment.
    // IF THIS ISN'T WORKING, DEFINE IT EARLIER.
    define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . str_replace($_SERVER['DOCUMENT_ROOT'], '', dirname(__FILE__) ) );
}

if (!defined('WP_SITEURL'))
{
    // Assumes WordPress is in a separate directory called 'wp', relative to WP_HOME.
    // IF IT'S DIFFERENT, DEFINE IT EARLIER.
    define('WP_SITEURL', WP_HOME . '/wp');
}

দ্বিতীয় এবং তৃতীয় সমস্যাগুলি উপযুক্ত সিমলিংকের সাথে সমাধানযোগ্য বলে মনে হচ্ছে (সমস্ত একই মেশিনে বিকাশ করছে)

আসল প্রশ্ন

  1. আমি কি যাইহোক পৃথকীকরণের ইউআরএলগুলি পরিচালনা করতে উন্নতি করতে পারি? আমি কি কিছু মিস করেছি যা ইউআরএলটি ডাটাবেসে হার্ডকোড করে দেবে?

  2. আমার কোনও সিটিমিংয়ের সাথে সচেতন হওয়া উচিত?

  3. অন্য কোন ইস্যু কি কেউ ভাবতে পারেন?

আমি বুঝতে পারি এই প্রশ্নগুলি খুব নির্দিষ্ট, যদি কিছু অস্পষ্ট থাকে তবে এ সম্পর্কে মন্তব্য করুন এবং আমি সংশোধন / স্পষ্ট করব।

ধন্যবাদ।

উত্তর:


2

আমি প্রশ্ন 2 এর উত্তর দেব, সাবধান থাকব যে ডাটাবেসের কিছু মান সিরিয়ালযুক্ত অ্যারেতে সঞ্চিত আছে। উদাহরণস্বরূপ, যদি আপনার ইউআরএল স্ট্রিংয়ের দৈর্ঘ্য পরিবর্তন হয় এবং এটি সিরিয়ালাইজড অ্যারেতে থাকে তবে আপনাকে তার জন্য সূচি আপডেট করতে হবে।

আপনি এই পিএইচপি স্ক্রিপ্টটি সিরিয়ালযুক্ত অ্যারেগুলিতে সমস্ত মান আপডেট করতে বা নিজের স্ক্রিপ্টের কমান্ড লাইন থেকে চালাতে ব্যবহার করতে পারেন


আমাকে পিএইচপি স্ক্রিপ্টের দিকে নির্দেশ করার জন্য একটি বিলিড ধন্যবাদ। এটি আমার ওয়ার্ডপ্রেস সম্পর্কিত আরও একটি কাজ নিয়ে কয়েকটি সমস্যা সমাধান করেছে।
নেভিট্রনিক

1

প্রশ্ন 1: আপনি কেবল পোস্ট সামগ্রীর চেয়ে আরও বেশি জায়গায় ডাটাবেসগুলিতে প্রবেশ এবং বেরিয়ে আসার URL পেয়েছেন। আমি URL পাওয়া *_postmeta, *_commentsএবং *_options(বেশী আপনি সংজ্ঞায়িত ছাড়াও)। এটি প্লাগইন ক্রিয়াকলাপ এবং কাস্টম মেটা ফিল্ড ক্রিয়াকলাপ গণনা করছে না ।

প্রশ্ন 2: আমি কখনও কখনও সুবিধার জন্য প্লাগইনগুলিকেও সিমলিংক করব এবং বেশিরভাগ সময় এটি কাজ করে। কখনও কখনও এটি না। সমস্যার সমাধানের সঠিক পরিস্থিতি আমি আপনাকে বলতে পারি না তবে জাভাস্ক্রিপ্টটি কোনও কারণ বলে মনে হচ্ছে।

প্রশ্ন 3: আমি *_optionsটেবিলে কিছু আশা করি যদি সমস্যা থাকে if অ্যাক্টিভেটেড প্লাগইন এবং সক্রিয় থিমের মতো জিনিসগুলি সেখানে রাখা হয়, অন্যান্য অনেক তথ্যের মধ্যে সুন্দর সাইট নির্দিষ্ট।


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