WordPress
आपके WordPress डेटाबेस में सर्च और रिप्लेस चलाना
WordPress stores absolute URLs in dozens of database tables, so a domain change or an SSL move leaves old addresses scattered through posts, options and plugin settings: a search and replace is how…
WordPress अपने डेटाबेस में दर्जनों टेबल में निरपेक्ष URL संग्रहीत करता है, इसलिए डोमेन परिवर्तन या SSL स्थानांतरण से पुराने पते पोस्ट, विकल्प और प्लगइन सेटिंग में बिखरे रहते हैं: खोज और प्रतिस्थापन उन्हें सुरक्षित रूप से साफ करने का तरीका है। यह गाइड KPanel में इसे करने के दो समर्थित तरीकों को कवर करती है, एक सामान्य तीसरी विधि डेटा को क्यों भ्रष्ट करती है, और परिणाम को सत्यापित करने का तरीका।
जब आपको एक की आवश्यकता हो
- SSL सक्षम करने के बाद
http://सेhttps://पर जाना। - डोमेन बदलना, उदाहरण के लिए
old-brand.co.nzसेnew-brand.co.nz। - स्टेजिंग को प्रोडक्शन में पुश करने के बाद, जब स्टेजिंग होस्टनाम अभी भी डेटाबेस में बेक किया गया हो।
- एक पुराने एसेट होस्ट को सेवामुक्त करना और हर छवि URL को एक बार में पुनः निर्देशित करना।
- कई पोस्ट में बल्क टाइपो को ठीक करना, जैसे एक पुरानी फोन संख्या या एक बंद उत्पाद का नाम।
एक खोज और प्रतिस्थापन एक ही बार में हर टेबल में पंक्तियों को फिर से लिखता है और प्रति-पंक्ति पूर्ववत्ती नहीं होता है। शुरू करने से पहले एक बैकअप लें, हर बार, भले ही परिवर्तन तुच्छ दिखे। KPanel स्वचालित रूप से एक बनाता है जब आप नीचे वर्णित अंतर्निहित उपकरणों का उपयोग करते हैं, लेकिन यदि आप कमांड स्वयं चला रहे हैं तो आप इसके लिए जिम्मेदार हैं। बैकअप लेना देखें।
आप केवल एक SQL REPLACE क्यों नहीं चला सकते
यह WordPress डेटाबेस कार्य में सबसे एकल सबसे क्षतिग्रस्त गलती है, इसलिए आप एक विधि चुनने से पहले इसे समझना लायक है।
WordPress प्लगइन सेटिंग, थीम विकल्प और विजेट डेटा को PHP सीरियलाइज़्ड स्ट्रिंग के रूप में संग्रहीत करता है। एक सीरियलाइज़्ड स्ट्रिंग अंदर के हर मान की लंबाई रिकॉर्ड करती है, जैसे:
a:1:{s:3:"url";s:26:"http://old-domain.co.nz/x";}
वह s:26 कहता है कि URL 26 वर्ण लंबा है। http:// को https:// से एक सादे SQL REPLACE() का उपयोग करके प्रतिस्थापित करें और पाठ 27 वर्ण बन जाता है जबकि संग्रहीत लंबाई अभी भी 26 का दावा करती है। PHP तब पूरे विकल्प को अनसीरियलाइज़ करने से इनकार करता है, और सेटिंग चुपचाप खाली पर वापस आ जाती है। थीम कस्टमाइज़र सेटिंग गायब हो जाते हैं, स्लाइडर अपनी स्लाइड खो देते हैं, प्लगइन लाइसेंस स्वयं को अनरजिस्टर करते हैं।
WP-CLI खोज-प्रतिस्थापन जो KPanel चलाता है, प्रत्येक मान को अनसीरियलाइज़ करता है, इसके अंदर प्रतिस्थापित करता है, और सही की गई लंबाई के साथ पुनः सीरियलाइज़ करता है। यही कारण है कि यह यहाँ प्रलेखित एकमात्र विधि है।
कभी भी UPDATE wp_options SET option_value = REPLACE(...) न चलाएं या WordPress डेटाबेस के विरुद्ध phpMyAdmin में समकक्ष न चलाएं। यह लगता है कि यह काम कर गया, यह पंक्तियों को प्रभावित करने की रिपोर्ट करता है, और यह चुप्पी से हर सीरियलाइज़्ड सेटिंग को नष्ट कर देता है जो यह छूता है। बैकअप पुनर्स्थापित करने के अलावा कोई मरम्मत नहीं है।
विधि 1: खोज और प्रतिस्थापन कार्ड
यह लगभग सभी के लिए सही विकल्प है। यह हर WordPress योजना पर उपलब्ध है।
- KPanel में साइन इन करें और बाएं साइडबार में Websites पर क्लिक करें।
- साइट पर क्लिक करें।
- WordPress टैब खोलें, फिर Quick Actions अनुभाग।
- Search & Replace कार्ड खोजें और Configure पर क्लिक करें।
- Find (old value) में मौजूदा पाठ दर्ज करें।
- Replace with में नया पाठ दर्ज करें।
- Dry run (preview only, no changes) को टिक किया हुआ छोड़ें और Preview पर क्लिक करें।

ड्राई रन यह रिपोर्ट करता है कि कितने प्रतिस्थापन किए जाएंगे और गणना को तालिका और स्तंभ द्वारा विभाजित करता है, इसलिए आप देख सकते हैं कि परिवर्तन कहाँ होगा इससे पहले कि आप इसे प्रतिबद्ध करें।
जब पूर्वावलोकन सही दिखता है:
- Dry run को अनचेक करें।
- Run पर क्लिक करें।
- डायलॉग की पुष्टि करें।
प्रतिस्थापन शुरू होने से पहले स्वचालित रूप से एक पूर्ण बैकअप लिया जाता है, और रन में प्लगइन द्वारा बनाई गई तालिकाओं सहित सभी तालिकाएं शामिल होती हैं।
सबसे विशिष्ट स्ट्रिंग खोजें जो आप कर सकते हैं। old-domain.co.nz को प्रतिस्थापित करना भी mail.old-domain.co.nz और staging.old-domain.co.nz को फिर से लिखता है, जो शायद ही कभी आप चाहते हैं। स्कीम को शामिल करना, जैसे https://old-domain.co.nz, मिलान को कसा रखता है।
विधि 2: कंसोल से WP-CLI
कंसोल आपको फ्लैग पर अधिक नियंत्रण के साथ एक ही इंजन देता है। यह प्रबंधित योजनाओं पर दिखाई देने वाले अनुभागों में से एक है; अन्य योजनाओं पर टैब पट्टी इसके बजाय एक +8 on Managed लिंक दिखाती है।
साइट खोलें, फिर WordPress, फिर Console। प्रॉम्प्ट पहले से ही wp से शुरू होता है, इसलिए केवल कमांड के बाकी हिस्से को टाइप करें।
पहले पूर्वावलोकन करें:
search-replace 'http://old-domain.co.nz' 'https://old-domain.co.nz' --all-tables --dry-run
फिर इसे वास्तविक रूप से चलाएं:
search-replace 'http://old-domain.co.nz' 'https://old-domain.co.nz' --all-tables
कंसोल आपके लिए बैकअप नहीं लेता है। स्वचालित प्री-रन बैकअप केवल तभी होता है जब आप विधि 1 में Search & Replace कार्ड का उपयोग करते हैं। यदि आप यहाँ कमांड चलाते हैं, तो पहले साइट के Backups टैब से स्वयं एक बैकअप लें।
उपयोगी फ्लैग:
| फ्लैग | यह क्या करता है |
|---|---|
--all-tables | प्लगइन द्वारा बनाई गई कस्टम तालिकाओं को शामिल करता है, केवल मुख्य WordPress वाले नहीं |
--dry-run | रिपोर्ट करता है कि क्या बदलेगा और कुछ नहीं लिखता है |
--precise | प्रतिस्थापन के लिए SQL के बजाय PHP का उपयोग करता है। धीमा, लेकिन अजीब सीरियलाइज़्ड संरचनाओं को संभालता है |
--skip-columns=guid | पोस्ट GUIDs को अकेला छोड़ देता है (नीचे देखें) |
--report-changed-only | आउटपुट को तालिकाओं तक सीमित करता है जो वास्तव में बदल गईं |
GUIDs पर एक नोट
हर WordPress पोस्ट का एक guid कॉलम होता है। URL की तरह दिखने के बावजूद यह एक पहचानकर्ता है, एक लिंक नहीं, और फीड रीडर इसका उपयोग यह बताने के लिए करते हैं कि क्या उन्होंने पहले से ही एक आइटम देखा है। इसे फिर से लिखने से आपके फीड में हर पोस्ट नई के रूप में फिर से दिखाई दे सकता है।
जब आप स्थायी रूप से नए डोमेन पर जा रहे हैं और नए सिरे से शुरू कर रहे हैं तो GUIDs को फिर से लिखें। --skip-columns=guid के साथ उन्हें छोड़ दें जब आप केवल एक ही डोमेन पर HTTP से HTTPS पर जा रहे हों।
डोमेन बदलना: इसके बजाय Site URL कार्ड का उपयोग करें
यदि पूरा बिंदु साइट को एक नए डोमेन पर स्थानांतरित करना है, तो खोज और प्रतिस्थापन से शुरू न करें। Change Site URL कार्ड, समान Quick Actions अनुभाग पर, siteurl और home विकल्पों को अपडेट करता है और एक ऑपरेशन में सभी तालिकाओं में प्रतिस्थापन चलाता है, सही क्रम में। दूसरे तरीके से ऐसा करना WordPress को अपना ही व्यवस्थापक लोड करने में असमर्थ छोड़ सकता है।
प्रतिस्थापन के बाद
आप इसे पूरा कहने से पहले इस सूची के माध्यम से काम करें।
- कैश को फ्लश करें। Quick Actions अनुभाग पर, Flush Cache चलाएं। यदि साइट पूर्ण पृष्ठ कैश का उपयोग करती है, तो इसे WordPress से, फिर Caching से साफ करें।
- रीराइट नियमों को फ्लश करें। समान अनुभाग पर Flush Rewrites चलाएं, या wp-admin में Settings, फिर Permalinks खोलें और कुछ बदले बिना Save Changes पर क्लिक करें।
- CDN को शुद्ध करें यदि साइट इस पर है, Performance से, फिर Kapsule CDN। CDN कैश को शुद्ध करना देखें।
- एक निजी विंडो में साइट लोड करें ताकि आपका ब्राउज़र कैश आपको गुमराह न कर सके।
- पैडलॉक की जांच करें। SSL स्थानांतरण के बाद एक लापता या चेतावनी पैडलॉक का अर्थ है कि URL पीछे छोड़ दिए गए थे: मिश्रित सामग्री चेतावनी को ठीक करना।
- फिसलन वाले पृष्ठों के माध्यम से क्लिक करें। होम पेज स्लाइडर, हेडर लोगो, पेज बिल्डर के साथ बनाया गया कोई भी पृष्ठ, और एक स्टोर पर चेकआउट। ये सीरियलाइज़्ड विकल्प में रहने वाले URL को धारण करते हैं।
- किसी भी कैशिंग प्लगइन को साफ करें इसकी अपनी सेटिंग स्क्रीन से।
समस्या निवारण
ड्राई रन शून्य प्रतिस्थापन की रिपोर्ट करता है। स्ट्रिंग उस सटीक रूप में डेटाबेस में नहीं है। एक पिछली स्लैश, एक www. उपसर्ग, या स्कीम की जांच करें। पहले पुष्टि करने के लिए कि यह वहाँ है, केवल नंगे होस्टनाम को खोजने का प्रयास करें।
डोमेन परिवर्तन के बाद छवियां टूटी हुई हैं। मीडिया URL wp_posts और wp_postmeta में रहते हैं और --all-tables द्वारा उठाए जाते हैं, लेकिन एक CDN या छवि अनुकूलन प्लगइन अपनी खुद की फिर से लिखी गई प्रतियों को कैश कर सकता है। CDN और प्लगइन के कैश को शुद्ध करें, फिर पुनः लोड करें।
प्रतिस्थापन के बाद सेटिंग गायब हो गईं। यह सीरियलाइज़ेशन समस्या है, और इसका अर्थ है कि परिवर्तन यहाँ उपकरणों के माध्यम से नहीं बल्कि कच्चे SQL के साथ किया गया था। रन से पहले लिया गया बैकअप पुनर्स्थापित करें: बैकअप से पुनर्स्थापित करना।
स्टेजिंग URL वापस आते रहते हैं। कुछ उन्हें फिर से भर रहा है, आमतौर पर एक निर्धारित पुश या एक कैश किया गया विकल्प। स्टेजिंग का उपयोग: पुशिंग और पुलिंग में वर्कफ़्लो की जांच करें और सुनिश्चित करें कि जब आप पुश करते हैं तो Rewrite URLs टिक किया गया है।