
Brian Curtis
0
1086
40
Det er meget sjovt at eje og køre en WordPress-blog, især når du først kommer i gang. At designe stedet eller vælge et cool tema og skrive de første par indlæg i påvente af den enorme sverm af mennesker, som du er sikker på, er på vej hen. Det tager ikke lang tid, før virkeligheden rammer, og før du ved det, kan du ikke lide temaet, besøgende er ikke mere end et trickle, og du er klar over, at din webhost ikke rigtig har den hestekræft, du har brug for.
At dyrke en blog tager år, og en masse smerter og kamp - det er jeg sikker på, at Aibek ville vidne om. Så er der de store overgange, når du indser, at du er nødt til at foretage nogle store ændringer, og det vil kræve en hel masse arbejde.
Der er en række større ændringer, som jeg har måttet foretage på min egen blog, men en af de sværeste skyldtes det faktum, at jeg havde brugt en bestemt manuel metode til at indsætte Google-annoncer i mine blogartikler.
Ændring af indlæg med en enkelt SQL-kommando
Problemet er, at efter flere år med at have kørt blog, havde jeg næsten 1.000 indlæg med den Google-annonce manuelt indsat. Hvis jeg nogensinde har ønsket at foretage en ændring, er det tusind indlæg, jeg skulle redigere.
Jeg ønskede at bruge det coole post-post-skabelon-tilføjelse, som jeg skrev om i 2010. Dette ville automatisere indsættelsen af annoncer, der bevæger sig fremad, men hvis jeg brugte det uden at fjerne alle de eksisterende annoncer, ville jeg ende med to annoncer i de gamle artikler.
For at fjerne den gamle annonce måtte jeg udføre en lille smule SQL-magi, og det vil jeg dele med dig i dag. Handlingen finder sted i phpMyAdmin, og du skal vælge databasen for din blog fra menuen til venstre.
Koden, du vil bruge til at stripe sektioner af dit indhold, findes i SQL-tagget. Hvad jeg mener med det, er den kode, jeg vil vise dig, du kan bruge til at fjerne alt indhold, der findes på flere blogindlæg, fra 2 til 200 - eller mere. Det eneste krav er, at det, du vil fjerne, skal have en fælles starttekst og en sluttekst - ligesom en Google-annonce har et fælles starttag og et slutkode.
Sådan ser mine nyere blogindlæg ud med annoncen manuelt indsat lige efter “mere” tag på hver side, justeret til højre.
Den måde, denne kode er lagt på på siden, ser sådan ud:
Som du kan se, har jeg en “scripttype” starttag, som jeg kan bruge i starten af hver annonce, og a “script src” tag jeg kan bruge i slutningen.
Så her fungerer det. Du skal fortælle SQL “opdatering” kommando om, at du vil udslette den blok på din side fuldstændigt. Du skal forstå tre grundlæggende MySQL-funktioner - udskift, substr og lokalisere.
Brug først LOCATE til at fortælle kommandoen placeringen af start- og slutpunkter. I mit tilfælde bruger jeg strengene i starten og slutningen af det afsnit, jeg vil fjerne. Startplacering på begyndelsessiden er:
LOCATE ('', post_content)
Endeplaceringen er vanskeligere. Find giver dig starten af strengen, så du er nødt til at tilføje antallet af tegn helt til slutningen af strengen for at få slutplaceringen.
LOCATE ('", post_content) + 93
Derefter skal du fortælle det “ERSTATTE” funktion nøjagtigt hvilken tekst du vil erstatte. Det gør du ved at udtrække den egentlige streng fra indholdet af indlæg ved hjælp af SUBSTR-funktionen. Du skal give det startstedet (som du nu har) og længden. Længden, du skal beregne, ved at trække startpositionen fra den sidste position (som du også har).
Sådan ser det ud med koden ovenfor indsat i SUBSTR-funktionen:
substr (post_content, find ('', post_content), ((find ('', post_content) + 93) - (find ('', post_content))))
Ser gal ud, ikke? Men hvis du ser nøje, vil du se, at der er de tre sektioner, der er indlejret - postindhold, startplacering og længde.
Nu hvor du har den nøjagtige tekst, som du vil fjerne fra dine indlæg, er alt hvad du skal gøre at fortælle REPLACE-funktionen for at erstatte den med et mellemrum. Bare kopier koden ovenfor til følgende kommando:
UPDATE wp_posts SET post_content = erstatte (post_content, string_to_replace, replacement_string);
Sådan her:
UPDATE wp_posts SET post_content = REPLACE (post_content, substr (post_content, find ('', post_content), ((find ('', post_content) + 93) - (find ('', post_content))), ");
Kørsel af scriptet ovenfor, hvis alle syntakserne er korrekt justeret, skal du se følgende succesrige resultater i phpAdmin.
Nu, når jeg genindlæser indlægene i min webbrowser - voila! Annoncen er magisk blevet fjernet.
Forkert mig ikke, det virkede ikke på alle annoncer, fordi jeg havde nogle ældre, der havde lidt anderledes formatering i starten og slutningen. Syntes godt om siden.
Men med lidt finjustering, bare ved at ændre de nøjagtige tags til start / slut, var jeg i stand til at køre SQL igen og udslette disse også.
Denne teknik vil arbejde på at fjerne alt indhold, der overhovedet findes i dit WordPress-postindhold. Det er skønheden ved at have indlæg i en MySQL-database, du kan simpelthen køre SQL-kommandoer til at manipulere tusinder af poster på én gang - hvilket sparer en enorm mængde manuelt arbejde. Bare sørg for at tage backup af din database, før du starter!
Har du andre pæne anvendelser til denne SQL-kommando? Giv det et skud i din egen WordPress-database, og se, hvor godt det fungerer for dig. Del dine oplevelser og feedback i kommentarfeltet nedenfor.
Billedkreditter: Shutterstock