બ્લુપ્રિન્ટ્સ સાથે વર્ડપ્રેસમાં સામગ્રી ઇમ્પોર્ટ કરવી
એક નવી વર્ડપ્રેસ પ્લેગ્રાઉન્ડ સાઇટ મૂળભૂત સામગ્રી (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 - પુનરાવર્તનથી ડુપ્લિકેટ ન બને તેવું) બનાવી શકાય છે.