मैं एक वर्डप्रेस डेटाबेस को पोर्टेबल और यूआरएल स्वतंत्र कैसे बना सकता हूं?


9

मुद्दा

मैं एक बहु व्यक्ति टीम वातावरण में कुछ वर्डप्रेस विकास को अपनाने वाला हूं। (एक बार में एक ही कोडबेस पर काम करने वाले 3 या अधिक लोग, प्रत्येक स्थानीय रूप से विकासशील)

हमने जिन अन्य CMSes के साथ काम किया है, सभी ने एक ही डेटाबेस पर अपने इंस्टॉल्स को इंगित किया है और इस वजह से कि CMS / डेटाबेस ने कैसे काम किया है, इसका मतलब है कि हम सभी को एक ही सामग्री हमारे इंस्टॉल्स (अलग-अलग यूआरएल में स्थित) से खिला सकते हैं। बहुत अधिक समस्या के बिना एक ही डेटाबेस (कभी-कभी अपलोड फ़ोल्डर को सिंक करने के अलावा)

मेरा सवाल है, वर्डप्रेस के साथ, हमें इस समान दृष्टिकोण का उपयोग करने से रोकता है और हम इन मुद्दों को कैसे हल कर सकते हैं?

जैसे। वर्डप्रेस की तीन प्रतियां सभी एक ही डेटाबेस से चल रही हैं।

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

आदि

मुझे उम्मीद है कि यह बिना कहे चला जाता है कि यह केवल लॉन्च से पहले एक विकास के माहौल में होगा।

मुख्य मुद्दे

  1. डेटाबेस के भीतर विशिष्ट यूआरएल का संदर्भ ( 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');

मैंने php के माध्यम से घर और साइटुरल विकल्प निर्धारित किए हैं, जहां वर्डप्रेस को उन्हें काम करने के लिए स्थापित किया गया है। (फिर से, यह केवल विकास के लिए है) इसका मतलब यह है कि प्रत्येक व्यक्ति को इंस्टॉल करने पर वर्डप्रेस पोस्ट की सामग्री दिखेगी जैसे कि वह उस यूआरएल पर चल रहा है जब तक कि वह क्लाइंट को नहीं मिल जाता है।

<?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. क्या मैं वैसे भी अलग-अलग url की अपनी हैंडलिंग में सुधार कर सकता हूं? क्या ऐसा कुछ है जो मैंने याद किया है जो यूआरएल को डेटाबेस में हार्डकोड करेगा?

  2. किसी भी गोच को मुझे सिम्लिंकिंग के बारे में पता होना चाहिए?

  3. किसी भी अन्य मुद्दों किसी के बारे में सोच सकते हैं?

मुझे लगता है कि ये प्रश्न बहुत विशिष्ट हैं, अगर कुछ भी स्पष्ट नहीं है, तो इस पर टिप्पणी करें और मैं इसमें संशोधन / स्पष्टीकरण दूंगा।

धन्यवाद।

जवाबों:


2

मैं प्रश्न 2 का उत्तर दूंगा, ध्यान रखें कि डेटाबेस में कुछ मूल्य क्रमबद्ध सरणियों में संग्रहीत हैं। उदाहरण के लिए, यदि आपके URL स्ट्रिंग की लंबाई बदलती है और यह क्रमबद्ध सरणी में है, तो आपको इसके लिए सूचकांक को अपडेट करने की आवश्यकता है।

आप इस PHP स्क्रिप्ट का उपयोग क्रमबद्ध सरणियों में सभी मानों को अद्यतन करने के लिए कर सकते हैं , या इसे कमांड लाइन से अपनी स्क्रिप्ट में चला सकते हैं


मुझे उस PHP स्क्रिप्ट की दिशा में इंगित करने के लिए एक धन्यवाद। यह कुछ मुद्दों को हल करता है जो मैं एक अन्य वर्डप्रेस संबंधित कार्य के साथ कर रहा था।
नवाटिक क्रान्ति

1

प्रश्न 1: आपने URL को केवल पोस्ट सामग्री की तुलना में अधिक स्थानों पर जाकर डेटाबेस से बाहर निकाला है। मैं में URL मिले *_postmeta, *_commentsऔर *_options(जिन्हें आप परिभाषित के अलावा)। यह प्लगइन गतिविधि और कस्टम मेटा फ़ील्ड गतिविधि की गिनती नहीं है ।

प्रश्न 2: मैं कभी-कभी सहूलियत के लिए प्लगइन्स भी करता हूँ, और ज्यादातर समय यह काम करता है। कभी-कभी ऐसा नहीं होता। मैं आपको सटीक शर्तें नहीं बता सकता, जो एक समस्या का कारण बनती हैं, लेकिन जावास्क्रिप्ट एक कारक लगता है।

प्रश्न 3: *_optionsयदि कुछ हो तो मैं तालिका के साथ परेशानी की उम्मीद करूंगा । सक्रिय प्लगइन्स और सक्रिय विषय जैसी चीजें वहां रखी जाती हैं, जिनमें बहुत सी अन्य जानकारी बहुत विशिष्ट है।


आप प्रश्न 3 पर सही हैं, मुझे लगता है कि यह मुख्य रूप से इस तालिका में क्रमबद्ध रूप में संग्रहीत की जा रही चीजों के कारण है, जो अगर आप सावधान नहीं हैं तो टूट सकते हैं।
नेवीट्रॉनिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.