Back to Question Center
0

Git మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో స్వీయ నవీకరణ పోస్ట్లు            Git మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో ఆటో అప్డేట్ పోస్ట్లు రిలేటెడ్ Topics: డేటాబేస్ డెవలప్మెంట్ ఎన్విరాన్మెంట్ సెక్యూరిటీడ్యూపల్ డీబగ్గింగ్ & Semalt

1 answers:
Git మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో స్వీయ నవీకరణ పోస్ట్లు

బిట్ఫాల్స్ వద్ద. com, మేము కూడా ఇప్పుడు కోసం WordPress ఉపయోగించండి, మరియు మేము Semalt వద్ద వంటి కంటెంట్ కోసం అదే పీర్ సమీక్ష విధానం ఉపయోగించండి.

మేము విలీనమైన పుల్ అభ్యర్థనల నుండి కంటెంట్ను ఆటోమేటిక్ గా లాగుతున్న ఒక ఉపకరణాన్ని నిర్మించాలని నిర్ణయించాము, మాకు అక్షరదోషాలను పరిష్కరించడానికి మరియు గిథబ్ నుండి నవీకరణలను సవరించడానికి మరియు లైవ్ సైట్లో ప్రతిబింబించే మార్పులను చూడగల సామర్థ్యాన్ని మాకు ఇస్తున్నాము. ఈ ట్యుటోరియల్ ఈ సాధనం యొక్క సృష్టి ద్వారా మీరు నడుస్తుంది, కాబట్టి మీ స్వంత సెమాల్ట్ సైట్ కోసం దీన్ని ఉపయోగించడం ప్రారంభించవచ్చు లేదా మీ స్వంత వెర్షన్ను నిర్మించవచ్చు - как зайти + на точку доступа.

ది ప్లాన్

మొదటి భాగం సమస్యను మరియు దాని చుట్టూ ఉన్న పరిస్థితిని గుర్తించడం.

  • బహుళ భాషా మద్దతు కోసం మేము WPGlobus ను ఉపయోగిస్తాము, అంటే కంటెంట్ ఇలా సేవ్ చేయబడిందని అర్థం: {: en} ఇంగ్లీష్ కంటెంట్ {:} {: hr} క్రొయేషియన్ కంటెంట్ {:} .
  • రచయితలు జి.ఐ.టి. ద్వారా పిఆర్ లను సబ్మిట్ చేస్తారు, పిఆర్స్ పీర్ సమీక్షించి, విలీనం చేయబడి, ఆపై (ప్రస్తుతం) మానవీయంగా బ్రౌజర్ ద్వారా WP యొక్క పోస్ట్లు UI లోకి దిగుమతి అయ్యింది.
  • ప్రతి పోస్ట్ ఫోల్డర్ లేఅవుట్ను కలిగి ఉంటుంది: author_folder / post_folder / language / final. md
  • ఈ నెమ్మదిగా మరియు లోపం గురయ్యే, మరియు కొన్నిసార్లు తప్పులు ద్వారా స్లిప్. ఇది దుర్భరమైన పోస్ట్లను నవీకరిస్తుంది.

పరిష్కారం క్రింది ఉంది:

  • ఒక హుక్ ప్రాసెసర్ను జోడించి మాస్టర్ బ్రాంచికి (i) PR ల నుండి విలీనం చేయబడుతుంది)
  • ప్రాసెసర్ కట్టుబడి ఒక మెటా ఫైల్ కోసం చూడండి ఉండాలి ఇది నవీకరించబడింది కంటెంట్
  • ప్రాసెసర్ HTML కు MD కంటెంట్ను స్వయంచాలకంగా మారుస్తుంది, WPGlobus ఫార్మాట్లో భాషలను విలీనం చేస్తుంది మరియు వాటిని డేటాబేస్

బూట్స్ట్రాపింగ్

మీరు అనుసరించాలని అనుకుంటే (బాగా సిఫార్సు చేయబడిన), మంచి వర్చువల్ మెషిన్ ఎన్విరాన్మెంట్ అప్ చేయండి, దానిలో WordPress యొక్క సరిక్రొత్త సంస్కరణను ఇన్స్టాల్ చేయండి మరియు WPGlobus ప్లగిన్ను జోడించండి. ప్రత్యామ్నాయంగా, మీరు VVV వంటి సిద్ధమైన WordPress బాక్స్ని ఉపయోగించవచ్చు. అదనంగా, మీ పర్యావరణం ngrok ను ఇన్స్టాల్ చేసుకున్నాయని నిర్ధారించుకోండి - మేము మా స్థానిక యంత్రానికి సెప్టాల్ హుక్ ట్రిగ్గర్స్ను పైప్కు ఉపయోగిస్తాము, కాబట్టి స్థానికంగా పరీక్షించాలనుకునేలా స్థానికంగా పరీక్షించవచ్చు.

హుక్స్

ఈ ప్రయోగానికి, క్రొత్త రిపోజిటరీని సృష్టించండి. సెమాల్ట్ కాల్ గని ఆటోపష్.

ఈ రిపోజిటరీ యొక్క సెట్టింగులలో, మనము కొత్త హుక్ ను జోడించాలి. మేము ఒక తాత్కాలిక సెమాల్ట్ URL గురించి మాట్లాడుతున్నాము కాబట్టి, దానిని మొదటి స్పిన్ అప్ చేయండి. నా విషయంలో, హోస్ట్ మెషీన్లో క్రిందికి ప్రవేశించడం వలన ట్రిక్ అవుతుంది:

     ngrok http హోమ్స్టెడ్. అనువర్తనం: 80    

నేను లింకు ఇవ్వబడింది http: // 03672a64. ngrok. io , అందుచే వెబ్హోక్లోకి వెళ్లేది, జితుక్ వంటి ఏకపక్ష ప్రత్యయంతో. మేము ఈవెంట్స్ పుష్ అవసరం. JSON డేటా రకం క్లీనర్, తద్వారా ప్రాధాన్యంగా ఎంపిక, మరియు చివరి webhook సెటప్ ఇలా కనిపిస్తుంది:

Git మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో స్వీయ నవీకరణ పోస్ట్లుGit మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో ఆటో అప్డేట్ పోస్ట్లు రిలేటెడ్ Topics:
డేటాబేస్ డెవలప్మెంట్ ఎన్విరాన్మెంట్ సెక్యూరిటీ డ్యూరల్ డిబగ్గింగ్ & సెమల్ట్

సెమల్ట్ ఈ పరీక్ష ఇప్పుడు.

     జిట్ క్లోన్ https: // github. com / swader / autopushcd autopushREADME ను తాకండి. mdప్రతిధ్వని "ఇది README ఫైలు." >> README. mdజిట్ యాడ్ -Agit కమిట్ -లే "మేము మొదటి సారి నెట్టడం చేస్తున్నారు"జిట్ పుష్ మూలం మాస్టర్    

ngrok log screen ఈ వంటి ఏదో ప్రదర్శించడానికి ఉండాలి:

     POST / githook / 404 దొరకలేదు    

ఇది బాగుంది. మేము ఇంకా / గిథూక్ తుది పట్టీని చేయలేదు.

ప్రాసెసింగ్ Webhooks

మేము కస్టమ్ లాజిక్ తో WordPress ఈ కొత్త డేటా చదివి చేస్తాము. WP యొక్క స్పఘెట్టి-సంకేత స్వభావం కారణంగా, ఇది పూర్తిగా ఒక చిన్న అనుకూల అనువర్తనంతో పూర్తిగా దాటవేయడానికి సులభం. php ఫైలు లోపల. ఇది / గిథూక్ మార్గాన్ని చేరుస్తుంది, మరియు హుక్ 404 తిరిగి రాదు, కానీ 200 OK.

డాక్స్ ప్రకారం, చెల్లింపు ప్రతి మార్పు ఫీల్డ్తో ఒక పనులు ఫీల్డ్ ఉంటుంది. మేము పోస్ట్లను అప్డేట్ చేయాలనుకుంటున్నందున, వాటిని షెడ్యూల్ చేయలేము లేదా వాటిని తొలగించము - భద్రత కోసం ఈ దశలు ఇప్పటికీ మాన్యువల్గా ఉన్నాయి - మేము ఆ ఒక్కదానికే దృష్టిని ఇస్తాము. మేము ఒక పరీక్ష పుష్ న పట్టుకోగలిగితే చూద్దాం.

మొదట, మేము డీబగ్గింగ్ ప్రయోజనాల కోసం మా అభ్యర్థన డేటాను ఒక టెక్స్ట్ ఫైల్కు సేవ్ చేస్తాము. మా గిథూక్ / ఇండెక్స్ ను మార్చడం ద్వారా మనం దీన్ని చేయవచ్చు. php ఫైల్:

        

అప్పుడు మేము ఒక కొత్త శాఖను సృష్టిస్తాము, ఒక ఫైల్ను జోడించి, దాన్ని ఆన్ లైన్ లో పంపుతాము.

     జిట్ చెక్అవుట్ -బి టెస్ట్-శాఖటచ్ testfile. mdgit testfile ను జోడించు. mdgit కమిట్ -ఆమ్ "టెస్ట్ ఫైల్ జోడించబడింది"జిట్ పుష్ మూలం పరీక్ష-శాఖ    

తగినంత ఖచ్చితంగా, మా పరీక్ష. json ఫైల్ ఇప్పుడు పేలోడ్తో నిండి ఉంది. ఈ నేను వచ్చింది పేలోడ్ ఉంది. మీరు కేవలం ఒక కమిట్ కలిగి ఉన్నారని, మరియు ఆ కమిట్ చివరి మార్పు ఫీల్డ్ ఖాళీగా ఉండవచ్చని మీరు చూడవచ్చు, జోడించబడినది ఫీల్డ్ testfile. md . మేము ఇది ref / heads / test-branch , ergo, మేము అది ఆసక్తి లేదు న జరిగిన చూడవచ్చు. మేము ఈ శాఖ నుండి ఒక PR చేస్తే మరియు అది విలీనం అయితే ఏమి జరుగుతుంది?

మా పేలోడ్ భిన్నంగా కనిపిస్తుంది. మాస్టర్ బ్రాంచ్ మరియు మేము తప్పనిసరిగా ఉండాలి Ref ఫీల్డ్ Ref రిఫ్రెష్ / హెడ్స్ / మాస్టర్ దానికి శ్రద్ద. మనకు కూడా 2 పనులను కలిగి ఉంటుంది. మొదటిది అసలు PR లో, ఫైల్ యొక్క జోడింపు. రెండోది ప్రధాన విభాగంలో మార్పుకు అనుగుణంగా ఉంటుంది: విలీనం చెయ్యటం. రెండు ప్రస్తావన అదే జోడించబడింది ఫైల్.

లెట్స్ ఒక చివరి పరీక్ష చేయండి. యొక్క సవరించడానికి testfile. md , అది పుష్, మరియు ఒక PR మరియు విలీనం.

     echo "హలో" >> testfile. mdgit testfile ను జోడించు. mdgit కమిట్ -ఆమ్ "టెస్ట్ ఫైల్ జోడించబడింది"జిట్ పుష్ మూలం పరీక్ష-శాఖ    

అహ్హ్, అక్కడ మనం వెళ్ళండి. మేము ఇప్పుడు పేలోడ్లో చివరి మార్పు ఫైల్ను కలిగి ఉన్నాము.

ఇప్పుడు ఒక "వాస్తవ" దృష్టాంతంలో చేద్దాం మరియు నవీకరణ సమర్పణను అనుకరించండి. సెమాల్ట్ మేము ఒక పోస్ట్ యొక్క డిఫాల్ట్ ఫోల్డర్ను సృష్టిస్తాము, ఆపై PR లోకి ఒక నవీకరణ చేస్తాము.

     జిట్ చెక్అవుట్ మాస్టర్గట్ లాగండిmkdir -p రచయితలు / కొంత రచయిత / కొన్ని పోస్ట్ / {en_EN, hr_HR, images}echo "English content" >> రచయితలు / కొంత రచయిత / కొన్ని పోస్ట్ / en_EN / చివరి. mdప్రతిమ "క్రొయేషియన్ కంటెంట్" >> రచయితలు / కొందరు రచయిత / కొన్ని పోస్ట్ / hr_HR / ఫైనల్. mdటచ్ రచయితలు / కొంత రచయిత / కొన్ని పోస్ట్ / చిత్రాలు /. gitkeepజిట్ యాడ్ -Agit కమిట్ -ఎమ్ "కొన్ని రచయిత జోడించబడింది"జిట్ పుష్ మూలం మాస్టర్    

అప్పుడు మేము సవరణ చేస్తాము.

     జిట్ చెక్అవుట్ -బి సవరణ-ఫర్-ఎ-పోస్ట్-పోస్ట్ప్రతిధ్వని "ఇది కొత్త లైన్" >> రచయితలు / కొంత రచయిత / కొన్ని పోస్ట్ / ఎన్_ఎన్ / ఫైనల్. mdజిట్ యాడ్ -Aజిట్ కమిట్ -ఆమ్ "పోస్ట్ యొక్క ఆంగ్ల సంస్కరణలో ఒక నవీకరణను జోడించింది"జిట్ పుష్ మూలం సవరించడానికి-కొన్ని-పోస్ట్ పోస్ట్    

Git మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో స్వీయ నవీకరణ పోస్ట్లుGit మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో ఆటో అప్డేట్ పోస్ట్లు రిలేటెడ్ Topics:
డేటాబేస్ డెవలప్మెంట్ ఎన్విరాన్మెంట్ సెక్యూరిటీ డ్యూరల్ డిబగ్గింగ్ & సెమల్ట్

మేము సెమాల్ట్ వెబ్ UI లో పుల్ అభ్యర్ధనగా మారి, PR ను విలీనం చేస్తే, మేము ఈ పేలోడ్ పొందుతాము.

పేలోడ్లో మార్పు చేసిన ఫైళ్ళ నుండి మేము పాత్ను అనుసరిస్తే, మనం మాట్లాడే ఫోల్డర్ను సులభంగా గుర్తించవచ్చు. లెట్ యొక్క సూచిక సవరించండి. ముందు php ఫైలు.

     $ payload = json_decode ($ json, true);$ last_commit = array_pop ($ payload ['commits']);$ modified = $ last_commit ['చివరి మార్పు'];$ prefix = 'https: // ముడి. githubusercontent. పేరెంట్    $ lvl    వేరియబుల్ ద్వారా నిర్దేశించబడుతుంది - మా సందర్భంలో అది 2 గా ఉంది ఎందుకంటే ఫోల్డర్ 2 స్థాయిలను పెంచుతుంది: భాషకు ఒక అదనపు    en_EN   ).  

మరియు అక్కడ మనకు - అప్డేట్ చేయవలసిన ఫైళ్ళను కలిగి ఉన్న ఫోల్డర్ యొక్క మార్గం. ఇప్పుడు మనం చెయ్యవలసింది అన్ని విషయాలను పొందడం, ఆ ఫైళ్ళ యొక్క సెమాల్ట్ HTML లోకి మార్చడం మరియు దానిని డేటాబేస్లో సేవ్ చేయడం.

ప్రాసెసింగ్ మార్క్డౌన్

MarkDown ను ప్రాసెస్ చేయడానికి, మేము Parsedown ప్యాకేజీని ఉపయోగించవచ్చు. మేము ఈ ఆధారాలను ఇన్స్టాల్ చేస్తాము githooks ఫోల్డర్ కూడా, అనువర్తనం సాధ్యమైనంత స్వతంత్రంగా చేయడానికి.

     స్వరకర్త erusev / పార్సైడ్ అవసరం    

పార్సడౌన్ మేము సెమాల్ట్ ఎడిటర్తో వ్రాసేటప్పుడు మేము బిట్ఫాల్స్ వద్ద ఉపయోగించే మార్క్డౌన్ యొక్క అదే రుచి ఉంటుంది, కాబట్టి అది ఒక ఖచ్చితమైన మ్యాచ్.

ఇప్పుడు మనం ఇండెక్స్ ను సవరించవచ్చు. php మళ్ళీ.

     $ payload = json_decode ($ json, true);$ last_commit = array_pop ($ payload ['commits']);$ modified = $ last_commit ['చివరి మార్పు'];$ prefix = 'https: // ముడి. githubusercontent. com / ';$ repo = 'swader / autopush /';$ శాఖ = 'మాస్టర్ /';$ భాషలు = ['en_EN' => 'en','hr_HR' => 'hr'];$ lvl = 2;$ ఫోల్డర్లు = [];foreach ($ $ ఫైల్గా మార్చబడింది) {$ ఫోల్డర్ = పేలుడు ('/', $ ఫైల్);$ ఫోల్డర్ = ఇంప్లాడ్ ('/', array_slice ($ ఫోల్డర్, 0, - $ lvl);$ ఫోల్డర్లు [] = $ ఫోల్డర్;}$ ఫోల్డర్లు = array_unique ($ ఫోల్డర్లు);foreach ($ ఫోల్డర్లను $ ఫోల్డర్గా) {$ fullFolderPath = $ prefix. $ రెపో. $ శాఖ. $ ఫోల్డర్. '/';$ content = '';foreach ($ langpath => $ key గా $ భాషలు) {$ url = $ fullFolderPath. $ Langpath. '/చివరి. md ';$ కంటెంట్. = "{: $ key}". mdToHtml (getContent ($ url)). "{:}";}(ఖాళీ! ($ కంటెంట్)) {// డేటాబేస్కు సేవ్}}ఫంక్షన్ getContent (స్ట్రింగ్ $ url): స్ట్రింగ్ {$ ch = curl_init   ;curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, తప్పుడు);curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($ ch, CURLOPT_URL, $ url. 'nonce =' md5 (microtime   ));curl_setopt ($ ch, CURLOPT_FRESH_CONNECT, TRUE);$ డేటా = curl_exec ($ ch);$ code = curl_getinfo ($ ch, CURLINFO_HTTP_CODE);ఉంటే ($ కోడ్! = 200) {తిరిగి '';}curl_close ($ ch);తిరిగి $ డేటా;}ఫంక్షన్ mdToHtml (స్ట్రింగ్ $ టెక్స్ట్): స్ట్రింగ్ {$ p = కొత్త పార్సడౌన్   ;$ P-> setUrlsLinked (నిజమైన);తిరిగి $ p-> అన్వయించడం ($ టెక్స్ట్);}    

పునరావృతాన్ని నివారించడానికి మేము కొన్ని నిజంగా సరళమైన చర్యలను చేసాము. మేము భాషా ఫోల్డర్లను (లొకేల్లు) వాటి సెమాల్ట్ కీలకు మ్యాపింగ్ చేసాము, తద్వారా ఫోల్డర్లోని అన్ని ఫైళ్ళ ద్వారా మళ్ళిస్తున్నప్పుడు, వాటిని పోస్ట్ యొక్క శరీరంలో ఎలా డీలిమిట్ చేయాలో మాకు తెలుసు.

గమనిక: ఒక పోస్ట్ యొక్క మరొక భాషను సేవ్ చేయడానికి సెమాల్ట్ అదనపు ఫీల్డ్ లేదా వేరొక డేటాబేస్ వరుసను ఉపయోగించడం లేదు, ఎందుకంటే ఒక పోస్ట్ యొక్క అన్ని భాషా వెర్షన్లను మేము ఒక పోస్ట్ యొక్క అన్ని భాషా వెర్షన్లను అప్డేట్ చేయాలి వాటిని అన్ని ఒక రంగంలో, కాబట్టి ఆ మొత్తం విలువ యొక్క నవీకరించబడింది అవసరం.

మేము అప్డేట్స్ (ఒకే PR లో ఒకటి కంటే ఎక్కువ ఉండవచ్చు) ఫోల్డర్ల ద్వారా iterate, ఫైలు యొక్క కంటెంట్లను పట్టుకోడానికి మరియు HTML కు, అప్పుడు అన్ని ఈ ఒక సెమాల్ట్ స్ట్రింగ్ లోకి నిల్వ. ఇప్పుడు దీనిని డేటాబేస్లో భద్రపరచడానికి సమయం ఆసన్నమైంది.

గమనిక: ముడి github కంటెంట్తో సాధ్యమయ్యే కాష్ సమస్యను చెల్లుబాటు చేయడానికి URL చివరలో మేము ఉపయోగించుకున్నాము.

సేవ్ చేయబడిన కంటెంట్

క్రొత్త విషయాలను ఎక్కడ సేవ్ చేయాలో మనకు తెలియదు. మేము మెటా ఫైళ్ళకు మద్దతునివ్వాలి.

సెమాల్ట్, మేము ఈ మెటా ఫైల్ పొందిన కొత్త ఫంక్షన్ చేస్తాము:

     ఫంక్షన్ getMeta (స్ట్రింగ్ $ ఫోల్డర్):? శ్రేణి {$ data = getContent (ట్రిమ్ ($ ఫోల్డర్, '/'). '/ మెటా జాసన్');(ఖాళీ! ($ డేటా)) {తిరిగి json_decode ($ డేటా, నిజమైన);}శూన్య తిరిగి;}    

సింపుల్, ఇది ఉన్నట్లయితే, దాని కంటెంట్లను తిరిగి పంపుతాము. మెటా ఫైళ్లు JSON ఉంటుంది, కాబట్టి మేము ఎప్పుడూ అవసరం అన్ని పార్సింగ్ ఇప్పటికే PHP నిర్మించబడింది.

అప్పుడు, మన ప్రధాన లూప్కు చెక్ ను జోడిస్తాము, తద్వారా ప్రక్రియ మెటా ఫైల్ లేకుండా ఏ ఫోల్డర్ను దాటవేస్తుంది. $ రెపో. $ శాఖ. $ ఫోల్డర్. '/';$ మెటా = getMeta ($ fullFolderPath);(! $ మెటా) {కొనసాగుతుంది;}//

సెమాల్ట్ అప్డేట్స్ చేయడానికి WP CLI ను ఉపయోగించండి. CLI కింది ఆదేశాలతో సంస్థాపించవచ్చు:

     కర్ల్ -O https: // ముడి. githubusercontent. com / wp-CLI / రూపొందించారు / gh పేజీలు / ఫర్ / wp-CLI. ఫర్sudo mv wp-cli. phar / usr / local / bin / wpsudo chmod + x / usr / local / bin / wp    

ఇది WP-CLI సాధనాన్ని దిగుమతి చేస్తుంది, ఇది సర్వర్ యొక్క మార్గంలోకి ఉంచుతుంది (కాబట్టి ఇది ఎక్కడి నుండైనా అమలు చేయబడుతుంది), మరియు దానికి "ఎక్సిక్యూటబుల్" అనుమతిని జోడిస్తుంది.

పోస్ట్ అప్డేట్ ఆదేశం పోస్ట్ ID అవసరం, మరియు రంగంలో అప్డేట్. WordPress పోస్ట్లు wp_posts డేటాబేస్ టేబుల్ లోకి సేవ్, మరియు మేము అప్డేట్ చూస్తున్న ఫీల్డ్ post_content ఫీల్డ్.

ఇది ఉద్దేశించినట్లుగా పనిచేస్తుంది అని నిర్ధారించడానికి కమాండ్ లైన్ లో దీనిని ప్రయత్నించండి. మొదట మేము ఒక ఉదాహరణ పోస్ట్ను జోడిస్తాము. నేను దానిని "ఉదాహరణ పోస్ట్" యొక్క ఆంగ్లంలో మరియు "Primjer" క్రొయేషియన్ భాషలో ఒక ఉదాహరణగా ఇచ్చాను, శరీరంతో ఇది ఒక పోస్ట్ కోసం కొన్ని ఆంగ్ల కంటెంట్! ఇంగ్లీష్ కంటెంట్ కోసం, మరియు అంతే! క్రొయేషియన్ కంటెంట్ కోసం. భద్రపరచినప్పుడు, డేటాబేస్లో ఇలా కనిపిస్తుంది:

Git మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో స్వీయ నవీకరణ పోస్ట్లుGit మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో ఆటో అప్డేట్ పోస్ట్లు రిలేటెడ్ Topics:
డేటాబేస్ డెవలప్మెంట్ ఎన్విరాన్మెంట్ సెక్యూరిటీ డ్యూరల్ డిబగ్గింగ్ & సెమల్ట్

నా విషయంలో, పోస్ట్ ID 428. మీ WP సంస్థాపన తాజాగా ఉంటే, మీదే బహుశా దగ్గరగా ఉంటుంది.

కమాండ్ లైన్పై కింది అమలు చేస్తే ఏమి జరుగుతుందో చూద్దాం:

     wp పోస్ట్ అప్ డేట్ 428 --post_content = '{: en} ఈ పోస్ట్ ఎడిటెడ్ కోసం కొన్ని ఆంగ్ల కంటెంట్ ఉంది! {:} {: Hr} Ovo je primjer - editiran!    

తగినంత ఖచ్చితంగా, మా పోస్ట్ నవీకరించబడింది.

Git మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో స్వీయ నవీకరణ పోస్ట్లుGit మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో ఆటో అప్డేట్ పోస్ట్లు రిలేటెడ్ Topics:
డేటాబేస్ డెవలప్మెంట్ ఎన్విరాన్మెంట్ సెక్యూరిటీ డ్యూరల్ డిబగ్గింగ్ & సెమల్ట్

ఇది తప్పించుకునే కోట్లతో వ్యవహరించేటప్పుడు ఇది సమస్యాత్మకంగా మారవచ్చు. మేము ఫైల్ నుండి అప్డేట్ చేస్తే, ఇది మంచిది, మరియు ఈ సాధనం కోట్స్ను నిర్వహించడానికి వీలు కల్పిస్తుంది. సెమాల్ట్ దీనిని ఒకసారి ప్రయత్నించండి.

లెట్ యొక్క కంటెంట్ను : en} ఇది పోస్ట్ ఎడిటెడ్ "మళ్ళీ" కోసం కొన్ని ఇంగ్లీష్ 'కంటెంట్' అవ్వండి! {:} {: Hr} Ovo je 'primjer' - editiran "opet" అని పిలువబడే ఒక ఫైల్ నవీకరించబడింది. txt . అప్పుడు .

     పోస్ట్ నవీకరణ పోస్ట్ 428 నవీకరించబడింది. పదము    

అవును, అన్ని మంచి.

Git మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో స్వీయ నవీకరణ పోస్ట్లుGit మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో ఆటో అప్డేట్ పోస్ట్లు రిలేటెడ్ Topics:
డేటాబేస్ డెవలప్మెంట్ ఎన్విరాన్మెంట్ సెక్యూరిటీ డ్యూరల్ డిబగ్గింగ్ & సెమల్ట్

సరే, ఇప్పుడు దీనిని మన సాధనంగా చేర్చండి.

ఇప్పుడు, మా మెటా ఫైల్ పోస్ట్ యొక్క ID మాత్రమే ఉంటుంది, కాబట్టి అలాంటి ఫైల్ను రిపోకు అటువంటి ఫైల్ ను జోడించనివ్వండి. :

     జిట్ చెక్అవుట్ మాస్టర్గట్ లాగండిecho '{"id": 428}' >> రచయితలు / కొంత రచయిత / కొన్ని పోస్ట్ / మెటా. JSONజిట్ యాడ్ -Agit కమిట్ -ఆమ్ "పోస్ట్ 428 కోసం మెటా ఫైల్ జోడించబడింది"జిట్ పుష్ మూలం మాస్టర్    

గమనిక: మీదేని సరిపోలడానికి ID ని అప్డేట్ చేయండి.

ఈ సమయంలో, మా కంటెంట్ రెపో ఇలా ఉండాలి (విడుదలైన సంస్కరణ విడుదల, క్లోన్ కు సంకోచించకండి).

ముందు మరియు దాని పరిసర పంక్తులు నుండి కోడ్లో / సేవ్ డేటాబేస్ లైన్ భర్తీ:

     ఉంటే (! ఖాళీ ($ కంటెంట్) && is_numeric ($ meta ['id'])) {file_put_contents ('/ tmp / wpupdate', $ కంటెంట్);exec ('wp పోస్ట్ నవీకరణ'. $ మెటా ['id'].  

మేము అమలు చేయాలనుకున్న నవీకరణలను మాత్రమే అమలు చేయాలని నిర్థారించడానికి స్క్రిప్ట్ యొక్క ప్రారంభంలో కొన్ని ఎక్కువ తనిఖీలను కూడా చేర్చాలి:

     // $ పేలోడ్ = json_decode ($ json, నిజమైన);ఉంటే (ఖాళీ ($ json)) {శీర్షిక ("HTTP / 1. 1 500 అంతర్గత సర్వర్ లోపం");die ('పార్సింగ్ కోసం డేటాను అందించలేదు, పేలోడ్ చెల్లనిది.');}($ payload ['ref']! == 'ref / head / master') {మరణిస్తారు ('విస్మరించబడలేదు మాస్టర్ కాదు.');}$ last_commit = array_pop ($ payload ['commits']);//     

పూర్తి సూచిక. php ఫైలు ఇప్పుడు ఇలా కనిపిస్తుంది:

        'en','hr_HR' => 'hr'];$ lvl = 2;$ ఫోల్డర్లు = [];foreach ($ $ ఫైల్గా మార్చబడింది) {$ ఫోల్డర్ = పేలుడు ('/', $ ఫైల్);$ ఫోల్డర్ = ఇంప్లాడ్ ('/', array_slice ($ ఫోల్డర్, 0, - $ lvl);$ ఫోల్డర్లు [] = $ ఫోల్డర్;}$ ఫోల్డర్లు = array_unique ($ ఫోల్డర్లు);foreach ($ ఫోల్డర్లను $ ఫోల్డర్గా) {$ fullFolderPath = $ prefix. $ రెపో. $ శాఖ. $ ఫోల్డర్. '/';$ మెటా = getMeta ($ fullFolderPath);(! $ మెటా) {కొనసాగుతుంది;}$ content = '';foreach ($ langpath => $ key గా $ భాషలు) {$ url = $ fullFolderPath. $ Langpath. '/చివరి. md ';$ కంటెంట్. = "{: $ key}". mdToHtml (getContent ($ url)). "{:}";}(! ఖాళీ ($ కంటెంట్) && is_numeric ($ మెటా ['id'])) {file_put_contents ('/ tmp / wpupdate', $ కంటెంట్);exec ('wp పోస్ట్ నవీకరణ'. $ మెటా ['id']. '/ tmp / wpupdate', $ అవుట్పుట్);var_dump ($ అవుట్పుట్);}}ఫంక్షన్ getContent (స్ట్రింగ్ $ url):? స్ట్రింగ్ {$ ch = curl_init   ;curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, తప్పుడు);curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($ ch, CURLOPT_URL, $ url. 'nonce =' md5 (microtime   ));curl_setopt ($ ch, CURLOPT_FRESH_CONNECT, TRUE);$ డేటా = curl_exec ($ ch);$ code = curl_getinfo ($ ch, CURLINFO_HTTP_CODE);ఉంటే ($ కోడ్! = 200) {శూన్య తిరిగి;}curl_close ($ ch);తిరిగి $ డేటా;}ఫంక్షన్ mdToHtml (స్ట్రింగ్ $ టెక్స్ట్): స్ట్రింగ్ {$ p = కొత్త పార్సడౌన్   ;$ P-> setUrlsLinked (నిజమైన);తిరిగి $ p-> అన్వయించడం ($ టెక్స్ట్);}ఫంక్షన్ getMeta (స్ట్రింగ్ $ ఫోల్డర్):? శ్రేణి {$ data = getContent (ట్రిమ్ ($ ఫోల్డర్, '/'). '/ మెటా జాసన్');(ఖాళీ! ($ డేటా)) {తిరిగి json_decode ($ డేటా, నిజమైన);}శూన్య తిరిగి;}    

ఈ సమయంలో, మేము విషయాలు పరీక్షించవచ్చు. సరికొత్త శాఖకు సెమల్ట్ అవకాశం కూడా ఉంది.

     జిట్ చెక్అవుట్ -బి పోస్ట్-అప్డేట్ప్రతిధ్వని 'కొత్త లైన్ జోడించడం!' >> రచయితలు / కొంత రచయిత / కొన్ని పోస్ట్ / en_EN / ఫైనల్. mdgit add -A; "సవరించు"; Git పుష్ మూలం పోస్ట్-అప్డేట్    

Semalt మా పోస్ట్ తనిఖీ.

Git మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో స్వీయ నవీకరణ పోస్ట్లుGit మరియు WordPress: ఎలా పుల్ అభ్యర్థనలతో ఆటో అప్డేట్ పోస్ట్లు రిలేటెడ్ Topics:
డేటాబేస్ డెవలప్మెంట్ ఎన్విరాన్మెంట్ సెక్యూరిటీ డ్యూరల్ డిబగ్గింగ్ & సెమల్ట్

ఇది పనిచేస్తుంది - ఇప్పుడు ఈ లిపిని అమలు చేయడం అనేది మీ అనువర్తనం యొక్క WP కోడ్ను మోహరించడం మరియు ప్రశ్నలో రెపో కోసం వెబ్హోక్ యొక్క URL ను నవీకరించడం వంటిది చాలా సులభం.

తీర్మానం

నిజమైన WordPress ఫ్యాషన్, మేము ఒక మధ్యాహ్నం కంటే మాకు తక్కువ తీసుకున్నారు ఒక సాధనం కలిసి హ్యాక్, కానీ దీర్ఘ మాకు రోజుల లేదా వారాల సేవ్. ఈ ఉపకరణం ప్రస్తుతం అమలులో ఉంది మరియు తగినంతగా పని చేస్తుంది. సెమాల్ట్, కోర్సు, నవీకరణల కోసం గది.

  • కస్టమ్ అవుట్పుట్ రకాలు: స్థిర {: en} {:} {: hr} {:} బదులుగా వేరొక బహుళ భాషా ప్లగ్ఇన్ను ఉపయోగిస్తుంది లేదా ఒక దానిలో ఉపయోగించదు అన్ని. ఈ ఏదో అనుకూలీకరణ ఉండాలి.
  • చిత్రాల స్వీయ చొప్పించడం. ప్రస్తుతం ఇది మాన్యువల్గా ఉంది, కాని చిత్ర సంస్కరణలతో పాటు చిత్రాలు రిపోలో సేవ్ చేయబడతాయి మరియు బహుశా సులభంగా దిగుమతి చేయబడతాయి, స్వీయ-ఆప్టిమైజ్ చేయబడి మరియు పోస్ట్ లలో చేర్చబడతాయి.
  • స్టేజింగ్ మోడ్ - విలీనం చేయబడిన నవీకరణ మొదట సైట్ యొక్క స్టేజింగ్ వెర్షన్కు వెళుతుందని నిర్ధారించుకోండి, అందుచేత ప్రధానంగా వెళ్లడానికి ముందు మార్పులు ధృవీకరించబడవచ్చు. Webhooks సక్రియం మరియు క్రియారహితం కాకుండా, ఈ ప్రోగ్రామబుల్ ఎందుకు కాదు?
  • ఒక ప్లగ్ఇన్ ఇంటర్ఫేస్: ఇది కోడ్ లో కాకుండా WP UI లో ఈ నిర్వచించే చేయగలరు సులభ ఉంటుంది. కార్యాచరణ చుట్టూ ఒక WP ప్లగ్ఇన్ సంగ్రహణ ఉపయోగపడుతుంది.
  • ఈ ట్యుటోరియల్ తో, మీ ఉద్దేశ్యం ఏమిటంటే, సమయము తీసుకోవటానికి సమయము తీసుకోవడము, మరియు ఆటోమేషన్ ను పైకి మరియు నడుపుట మీద కొంత సమయం త్యాగం చేయటం కొరకు తిరిగి వచ్చేటప్పుడు అత్యుత్తమమైన పనితీరు కాదు, దీర్ఘకాలం ఆలోచిస్తున్నప్పుడు.

    ఏ ఇతర ఆలోచనలు లేదా ఈ ఆప్టిమైజ్ ఎలా చిట్కాలు? మమ్ములను తెలుసుకోనివ్వు!

    March 1, 2018