બ્લુપ્રિન્ટ્સ સાથે વર્ડપ્રેસમાં સામગ્રી ઇમ્પોર્ટ કરવી
એક નવી વર્ડપ્રેસ પ્લેગ્રાઉન્ડ સાઇટ મૂળભૂત સામગ્રી (basic content) સાથે શરૂ થાય છે. બ્લુપ્રિન્ટ (Blueprint) વર્ડપ્રેસ એક્સપોર્ટ ફાઇલમાંથી ડેટા મેળવીને, વર્ડપ્રેસ API વડે સામગ્રી જનરેટ કરીને, અથવા પ્લેગ્રાઉન્ડ ZIP સ્નેપશોટને રિસ્ટોર કરીને તે ખાલી જગ્યા ભરવામાં મદદ કરી શકે છે.
આ માર્ગદર્શિકા બ્લુપ્રિન્ટ કન્ટેન્ટ ઇમ્પોર્ટ કરવાની પદ્ધતિ પસંદ કરવા પર ધ્યાન કેન્દ્રિત કરે છે અને ત્રણ અભિગમોની સરખામણી કરતો એક નાનો બેન્ચમાર્ક (benchmark) રજૂ કરે છે. થીમ સ્ટાર્ટર કન્ટેન્ટ, ટેસ્ટ ફિક્સ્ચર્સ, શૈક્ષણિક સામગ્રી અને અન્ય ડેમો-બિલ્ડિંગ વ્યૂહરચનાઓ માટે ડેટા ઇમ્પોર્ટ કરવો ઉપયોગી સાબિત થઈ શકે છે. વધુ વિકલ્પો માટે, પ્લેગ્રાઉન્ડ સાથે તમારા ડેમો માટે સામગ્રી પૂરી પાડવી જુઓ.
આ અભિગમો વિવિધ સમસ્યાઓનું નિરાકરણ કરે છે:
| પદ્ધતિ (Method) | આના માટે શ્રેષ્ઠ છે | તે શું ટ્રાન્સફર કરે છે |
|---|---|---|
importWxr | હાલની સામગ્રીને ઓવરરાઇટ કર્યા વિના વર્ડપ્રેસ સાઇટ્સ વચ્ચે શેર કરવા યોગ્ય પોર્ટેબલ સામગ્રી | પોસ્ટ્સ, પેજિસ, કસ્ટમ પોસ્ટ ટાઇપ્સ, ટર્મ્સ, લેખકો (authors), ટિપ્પણીઓ (comments) અને એટેચમેન્ટ સંદર્ભો |
runPHP | નાના, ચોક્કસ (deterministic) ફિક્સ્ચર્સ અને કસ્ટમ લૉજિકની જરૂર હોય તેવી સામગ્રી | વર્ડપ્રેસ APIs દ્વારા PHP કોડ જે પણ બનાવે છે તે બધું |
importWordPressFiles | સંપૂર્ણ પ્લેગ્રાઉન્ડ ડેમો રિસ્ટોર કરવા માટે | ડેટાબેઝ અને ZIP માં હાજર કોઈપણ વર્ડપ્રેસ ફાઇલો, જેમ કે પ્લગઇન્સ, થીમ્સ અને અપલોડ્સ |
જો તમને ફક્ત પોસ્ટ્સ અને ટર્મ્સની જરૂર હોય, તો WXR થી શરૂઆત કરો. જો સામગ્રી જનરેટ કરવામાં આવી હોય અથવા સેટઅપ લૉજિક પર આધાર રાખતી હોય, તો runPHP નો ઉપયોગ કરો. જો ડેટાબેઝ, મીડિયા, પ્લગઇન્સ, થીમ્સ અને સેટિંગ્સ એકસાથે રિસ્ટોર કરવાના હોય, તો ZIP સ્નેપશોટનો ઉપયોગ કરો.
importWxr સાથે વર્ડપ્રેસ XML એક્સપોર્ટ ઇમ્પોર્ટ કરવું
વર્ડપ્રેસ તેના XML એક્સપોર્ટ ફોર્મેટને WordPress eXtended RSS, અથવા WXR કહે છે. હાલની વર્ડપ્રેસ સાઇટમાં Tools > Export પરથી ફાઇલ બનાવો, અને પછી તેને importWxr સ્ટેપ માં પાસ કરો.
આ ઉદાહરણ બ્લુપ્રિન્ટ બંડલ માં blueprint.json ની બાજુમાં content.xml હોવાની અપેક્ષા રાખે છે:
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"landingPage": "/wp-admin/edit.php",
"preferredVersions": {
"php": "8.3",
"wp": "latest"
},
"login": true,
"steps": [
{
"step": "importWxr",
"file": {
"resource": "bundled",
"path": "/content.xml"
},
"fetchAttachments": false,
"rewriteUrls": true,
"importComments": false,
"authorsMode": "default-author",
"defaultAuthorUsername": "admin"
}
]
}
હોસ્ટ કરેલી ફાઇલ માટે, bundled રિસોર્સને url રિસોર્સ સાથે બદલો. જ્યારે ઇમ્પોર્ટરે WXR ફાઇલ દ્વારા સંદર્ભિત મીડિયા ફાઇલો ડાઉનલોડ કરવાની હોય ત્યારે fetchAttachments ને true પર સેટ કરો. નેટવર્ક ટ્રાન્સફર કુલ સેટઅપ સમય પર નોંધપાત્ર અસર કરી શકે છે, તેથી આ માર્ગદર્શિકામાં આગળનો બેન્ચમાર્ક એટેચમેન્ટ ફેચિંગને અક્ષમ રાખે છે.
importWxr ઇમ્પોર્ટ કરેલા લેખકોને લોક લ યુઝર્સ સાથે મેપ કરી શકે છે, યુઝર્સ બનાવી શકે છે અને સ્પષ્ટ URL રિપ્લેસમેન્ટ લાગુ કરી શકે છે. અન્ય ડોમેનમાંથી સામગ્રી ઇમ્પોર્ટ કરતાં પહેલાં importWxr વિકલ્પો જુઓ.
ફાયદા (Pros)
- વર્ડપ્રેસના પ્રમાણભૂત, પોર્ટેબલ કન્ટેન્ટ એક્સચેન્જ ફોર્મેટનો ઉપયોગ કરે છે.
- એક્સપોર્ટમાં રજૂ કરાયેલ પોસ્ટ ટાઇપ્સ, ટેક્સૉનોમીઝ, પોસ્ટ મેટા, લેખકો, ટિપ્પણીઓ અને સામગ્રી સંબંધો (content relationships) જાળવી રાખે છે.
- નવી સાઇટ માટે એટેચમેન્ટ્સ મેળવી શકે છે અને જૂના કન્ટેન્ટના URLs ને ફરીથી લખી (rewrite) શકે છે.
- સામગ્રીને લક્ષ્ય સાઇટના વર્ડપ્રેસ કોર, પ્લગઇન્સ, થીમ્સ અને મોટાભાગના સાઇટ સેટિંગ્સથી અલગ રાખે છે.
- સોર્સ XML હોવાથી કોઈપણ ટેક્સ્ટ એડિટરમાં મેન્યુઅલી તપાસ વું, વર્ઝનિંગ કરવું અને સંપાદિત કરવું સરળ છે.
ગેરફાયદા (Cons)
- આખી સાઇટને ક્લોન કરતું નથી. પ્લગઇન્સ, થીમ્સ, પ્લગઇન ટેબલ્સ, ઓપ્શન્સ અને ફાઇલો જે WXR માં રજૂ થતી નથી તેના માટે અલગ બ્લુપ્રિન્ટ સ્ટેપ્સની જરૂર પડે છે.
- એટેચમેન્ટ ઇમ્પોર્ટ માટે નેટવર્ક ઍક્સેસની જરૂર પડે છે અને તે જૂના મીડિયા URLs ઉપલબ્ધ રહેવા પર આધારિત છે.
- મોટી XML ફાઇલો હાલના SQLite ડેટાબેઝને રિસ્ટોર કરવા કરતાં વધુ પાર્સિંગ સમય અને મેમરી વાપરે છે.
- ફરીથી ઇમ્પોર્ટ કરવું એ ઉમેરાત્મક (additive) છે, સિંક્રનાઇઝેશન નથી. ઇમ્પોર્ટર તેને ન મળતી ટર્મ્સ બનાવે છે અને અસ્તિત્વમાં રહેલી સામગ્રીને ક્યારેય દૂર કરતું નથી; તે ફક્ત ત્યારે જ પોસ્ટને અવગણે છે જ્યારે હાલની પોસ્ટ તેના શીર્ષક, લેખક અને તારીખ સાથે મેળ ખાતી હોય.
- બ્લુપ્રિન્ટ WordPress Importer ડિપેન્ડન્સી આપમેળે ઇન્સ્ટોલ કરે છે, જે WXR ઇમ્પોર્ટ શરૂ થાય તે પહેલાં સેટઅપ કાર્ય વધારે છે.
runPHP સાથે સામગ્રી જનરેટ કરવી
runPHP સ્ટેપ સીધા જ વર્ડપ્રેસ APIs ને કૉલ કરી શકે છે. wp_insert_post() જેવા ફંક્શન્સને કૉલ કરતાં પહેલાં હંમેશા /wordpress/wp-load.php લોડ કરો.
નીચેનું ઉદાહરણ બેન્ચમાર્ક દ્વારા ઉપયોગમાં લેવાતી 100 પોસ્ટ્સ બનાવે છે:
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"landingPage": "/wp-admin/edit.php",
"preferredVersions": {
"php": "8.3",
"wp": "latest"
},
"login": true,
"steps": [
{
"step": "runPHP",
"code": "<?php\nrequire_once '/wordpress/wp-load.php';\n\nfor ( $index = 1; $index <= 100; $index++ ) {\n\t$result = wp_insert_post(\n\t\tarray(\n\t\t\t'post_title' => 'Benchmark post ' . $index,\n\t\t\t'post_content' => '<!-- wp:paragraph --><p>Blueprint import benchmark content.</p><!-- /wp:paragraph -->',\n\t\t\t'post_status' => 'publish',\n\t\t\t'post_type' => 'post',\n\t\t),\n\t\ttrue\n\t);\n\tif ( is_wp_error( $result ) ) {\n\t\tthrow new RuntimeException( $result->get_error_message() );\n\t}\n}"
}
]
}
મોટા પ્રોગ્રામ્સ માટે, ખૂબ લાંબી JSON સ્ટ્રિંગ જાળવવાને બદલે કોડને નાના પ્લગઇનમાં રાખો અથવા સેટઅપને ચોક્કસ સ્ટેપ્સમાં વિભાજિત કરો. ડેટાબેઝ ટેબલ્સમાં સીધું લખવાને બદલે વર્ડપ્રેસ APIs નો ઉપયોગ કરો જેથી હુક્સ (hooks), કેશ (caches) અને ડેટા વેલિડેશન યોગ્ય રીતે ચાલે. ધ્યાનમાં રાખો કે કોડ માત્ર સામગ્રી પૂરતો મર્યાદિત નથી: PHP જે કરી શકે છે તે બધું runPHP કરી શકે છે, જેમાં ઓપ્શન્સને ઓવરરાઇટ કરવું અથવા ડેટાબેઝમાં સીધ ો ફેરફાર કરવાનો પણ સમાવેશ થાય છે.
ફાયદા (Pros)
- જનરેટ કરેલા ડેટા અને તેના સંબંધો પર સંપૂર્ણ નિયંત્રણ પ્રદાન કરે છે.
- કોઈ કન્ટેન્ટ ફાઇલ અથવા નેટવર્ક ઍક્સેસની જરૂર પડતી નથી.
- એક જ ઑપરેશનમાં ઑપ્શન્સ, પોસ્ટ મેટા, યુઝર્સ, ટેક્સૉનોમીઝ અને પ્લગઇન-વિશિષ્ટ ડેટા ગોઠવી શકે છે.
- નાના ટેસ્ટ ફિક્સ્ચર્સ માટે ઉત્તમ કાર્ય કરે છે જેનું સત્ય સ્રોત (source of truth) કોડ જ રહેવું જોઈએ.
- નવા રેકોર્ડ્સ બનાવતાં પહેલાં હાલના રેકોર્ડ્સ શોધીને આને આઇડેમ્પોટન્ટ (idempotent - પુનરાવર્તનથી ડુપ્લિકેટ ન બને તેવું) બનાવી શકાય છે.
ગેરફાયદા (Cons)
- બ્લ ુપ્રિન્ટ એ વિશ્વસનીય ઇનપુટ છે. તમે વિશ્વાસ કરતા હોવ તેવા સ્ત્રોતમાંથી જ PHP ચલાવો.
- સ્ક્રિપ્ટે ભૂલો, પુનઃરન (reruns), ડિપેન્ડન્સીઝ અને આંશિક નિષ્ફળતાઓને સંભાળવી પડે છે.
- કોડ પ્લગઇનના APIs અથવા ડેટાબેઝ મોડેલ સાથે જોડાયેલો (coupled) બની શકે છે.
- એક પછી એક ઘણા રેકોર્ડ્સ બનાવવાથી દરેક રેકોર્ડ માટે વર્ડપ્રેસ હુક્સ અને ડેટાબેઝ રાઇટ્સ રન થાય છે, તેથી ડેટાસેટ વધવાની સાથે પર્ફોર્મન્સ ધીમું પડી શકે છે.
- હાલની એડિટોરિયલ સામગ્રી એક્સપોર્ટ કરવા કરતાં કસ્ટમ PHP લખવું વધુ લાંબુ (verbose) છે.
importWordPressFiles સાથે પ્લેગ્રાઉન્ડ ZIP રિસ્ટોર કરવું
importWordPressFiles સ્ટેપ એ સાઇટ રિસ્ટોર છે, માત્ર-સામગ્રી ઇમ્પોર્ટ નથી. તે ZIP માંથી ટોપ-લેવલ વર્ડપ્રેસ ફાઇલોને અનપેક કરે છે અને નવા ઇન્સ્ટન્સમાં અનુરૂપ પાથ બદલે છે. પ્લેગ્રાઉન્ડના Download as zip વિકલ્પ વડે બનાવેલી ZIP માં wp-content, તેનો SQLite ડેટાબેઝ, અપલોડ્સ અને પ્લેગ્રાઉન્ડ સ્કોપ URLs ને એડજસ્ટ કરવા માટે વપરાતું મેનિફેસ્ટ શામેલ હોય છે.
ડાઉનલોડ કરેલી ફાઇલને blueprint.json ની બાજુમાં મૂકો અને તેને બંડલ્ડ રિસોર્સ તરીકે સંદર્ભિત કરો:
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"landingPage": "/",
"preferredVersions": {
"php": "8.3",
"wp": "latest"
},
"login": true,
"steps": [
{
"step": "importWordPressFiles",
"wordPressFilesZip": {
"resource": "bundled",
"path": "/site.zip"
}
}
]
}
ZIP માં ફક્ત wp-content, સંપૂર્ણ વર્ડપ્રેસ ડિરેક્ટરી, અથવા રેપર (wrapper) ફોલ્ડરની અંદર નેસ્ટેડ વર્ડપ્રેસ ડિરેક્ટરી હોઈ શકે છે. જ્યારે આર્કાઇવમાં ઘણી સાઇટ્સ હોય અથવા જ્યારે ઓટોમેટિક રૂટ ડિટેક્શન પૂરતું ન હોય ત્યારે pathInZip નો ઉપયોગ કરો.
સોર્સ અને ડેસ્ટિનેશન વર્ડપ્રેસ, PHP, થીમ અને પ્લગઇન વર્ઝનને સુસંગત (compatible) રાખો. આ સ્ટેપ ઇમ્પોર્ટ કરેલા ડેટાબેઝને અપગ્રેડ કરે છે અને પ્લેગ્રાઉન્ડ સ્કોપ URLs ને સમાયોજિત કરે છે, પરંતુ તે મનસ્વી પ્રોડક્શન સર્વર કન્ફિગરેશન્સ માટે સામાન્ય સ્થળાંતર (migration) સાધન નથી.
ફાયદા (Pros)
- ડેટાબેઝ, અપલોડ્સ, પ્લગઇન્સ, થીમ્સ અને સેટિંગ્સને એકસાથે રિસ્ટોર કરે છે.
- પ્લગઇન-વિશિષ્ટ ટેબલ્સ અને ઑપ્શન્સને સાચવી રાખે છે જેને WXR રજૂ કરી શકતું નથી.
- વર્ડપ્રેસ APIs દ્વારા દરેક પોસ્ટને ફરીથી બનાવવાનું ટાળે છે, જે તૈયાર, પુનરાવર્તિત ડેમો માટે કાર્યક્ષમ હોઈ શકે છે.
- જ્યારે સ્નેપશોટ બ્લુપ્રિન્ટ સાથે બંડલ કરવામાં આવે ત્યારે ઑફલાઇન કાર્ય કરે છે.
- સોર્સ પ્લેગ્રાઉન્ડ ઇન્સ્ટન્સની સૌથી સચોટ કૉપિ તૈયાર કરે છે.
ગેરફાયદા (Cons)
- ZIP માં હાજર કોઈપણ ટોપ-લેવલ પાથને બદલે છે, તેથી તે સામગ્રીને મર્જ કરવાને બદલે હાલની સાઇટ સ્થિતિને ઓવરરાઇટ કરી શકે છે.
- તે મોટું, અપારદર્શક (opaque) છે અને વર્ઝન-કંટ્રોલ મર્જમાં રિવ્યૂ કરવું કે ઉકેલવું વધુ મુશ્કેલ છે.
- WXR ની તુલનામાં સ્નેપશોટને તેના વર્ડપ્રેસ, PHP, થીમ, પ્લગઇન અને ડેટાબેઝ વર્ઝન સાથે વધુ ચુસ્તપણે જોડે છે.
- અસ્તિત્વમાં રહેલી સાઇટમાં પસંદગીની પોસ્ટ્સ ઇમ્પોર્ટ કરવા માટે અયોગ્ય છે.
- ફક્ત વિશ્વસનીય સ્ત્રોતમાંથી જ રિસ્ટોર થવું જોઈએ; તેમાં એક્ઝિક્યુટેબલ PHP અને આખો ડેટાબેઝ હોઈ શકે છે.