Jak edytować tysiące postów WordPress za pomocą jednego polecenia SQL

  • Gabriel Brooks
  • 0
  • 2912
  • 34
Reklama

Posiadanie i prowadzenie bloga WordPress to świetna zabawa, zwłaszcza gdy zaczynasz. Projektując stronę lub wybierając fajny motyw i pisząc kilka pierwszych postów w oczekiwaniu na ogromną rzeszę ludzi, których jesteś pewien, że zmierzają w twoją stronę. Rzeczywistość nie trwa długo, a zanim się zorientujesz, nie podoba ci się ten motyw, przepływ odwiedzających jest niczym więcej, jak i zdajesz sobie sprawę, że Twój hosting nie ma wystarczającej mocy, której potrzebujesz.

Tworzenie bloga zajmuje lata, a cały ból i walka - jestem pewien, że Aibek zeznałby na to. Potem są główne przejścia, kiedy zdasz sobie sprawę, że musisz wprowadzić kilka poważnych zmian, a to zajmie dużo pracy.

Istnieje wiele poważnych zmian, które musiałem wprowadzić na własnym blogu, ale jedna z najtrudniejszych była spowodowana faktem, że zastosowałem pewną ręczną metodę, aby wstawić reklamy Google do moich artykułów na blogu.

Zmiana postów za pomocą pojedynczego polecenia SQL

Problem polega na tym, że po kilku latach prowadzenia bloga miałem prawie 1000 postów z tą reklamą Google ręcznie wstawioną. Jeśli kiedykolwiek chciałbym coś zmienić, to musiałbym edytować tysiące postów.

Chciałem użyć tego fajnego dodatku do szablonu, o którym pisałem w 2010 roku. Zautomatyzowałoby to wstawianie reklam do przodu, ale gdybym użył go bez usuwania wszystkich istniejących reklam, skończyłbym z dwoma reklamy w starych artykułach.

Aby usunąć starą reklamę, musiałem wykonać trochę magii SQL i zamierzam się nią dzisiaj podzielić. Akcja odbywa się w phpMyAdmin i musisz wybrać bazę danych swojego bloga z menu po lewej stronie.

Kod, którego będziesz używać do usuwania fragmentów zawartości, będzie znajdować się w znaczniku SQL. Rozumiem przez to kod, który wam pokażę, będzie można użyć do usunięcia dowolnej treści, która istnieje w wielu postach na blogu, od 2 do 200 - lub więcej. Jedynym wymaganiem jest to, że to, co chcesz usunąć, musi mieć wspólny tekst początkowy i końcowy - podobnie jak reklama Google ma wspólny tag początkowy i końcowy.

Tak wyglądają moje nowe wpisy na blogu, z reklamą wstawianą ręcznie zaraz po “więcej” tag na każdej stronie, wyrównany do prawej.

Sposób umieszczenia tego kodu na stronie wygląda następująco:

Jak widzisz, mam “typ skryptu” tag początkowy, którego mogę używać na początku każdej reklamy, oraz “skrypt src” tag, którego mogę użyć na końcu.

Oto jak to działa. Musisz powiedzieć SQL “aktualizacja” polecenie, które chcesz całkowicie wyczyścić ten blok strony. Musisz zrozumieć trzy podstawowe funkcje MySQL - wymienić, substr i Znajdź.

Najpierw użyj ZLOKALIZUJ, aby podać komendzie położenie punktów początkowych i końcowych. W moim przypadku używam ciągów na początku i na końcu sekcji, którą chcę usunąć. Lokalizacja początkowa na stronie początku to:

LOCATE ('', post_content)

Lokalizacja końcowa jest trudniejsza. Lokalizuj daje początek łańcucha, więc musisz dodać liczbę znaków na samym końcu łańcucha, aby uzyskać końcową lokalizację.

LOCATE („”, post_content) + 93

Następnie musisz powiedzieć “ZASTĄPIĆ” działają dokładnie jaki tekst chcesz zastąpić. Robisz to, wyodrębniając rzeczywisty ciąg znaków z treści postu, używając funkcji SUBSTR. Musisz podać mu początkową lokalizację (którą teraz masz) i długość. Długość, którą musisz obliczyć, odejmując pozycję początkową od ostatniej pozycji (którą również masz).

Oto, jak to wygląda, z powyższym kodem wstawionym do funkcji SUBSTR:

substr (post_content, locate ('', post_content), ((locate ('', post_content) + 93) - (locate ('', post_content)))

Wygląda na szaloną, prawda? Ale jeśli przyjrzysz się uważnie, zobaczysz trzy osadzone sekcje - treść postu, lokalizację początkową i długość.

Teraz, gdy masz dokładny tekst, który chcesz usunąć ze swoich postów, wszystko, co musisz zrobić, to powiedzieć funkcji REPLACE zastąpienie go spacją. Po prostu skopiuj powyższy kod do następującego polecenia:

UPDATE wp_posts SET post_content = replace (post_content, string_to_replace, replace_string);

Lubię to:

AKTUALIZACJA wp_posts SET post_content = REPLACE (post_content, substr (post_content, locate ('', post_content), ((locate ('', post_content) + 93) - (locate ('', post_content))), ");

Uruchomienie powyższego skryptu, jeśli cała składnia jest poprawnie wyrównana, powinieneś zobaczyć następujące pomyślne wyniki w phpAdmin.

Teraz, gdy ponownie ładuję posty w przeglądarce - voila! Reklama została magicznie usunięta.

Nie zrozum mnie źle, to nie działało na wszystkich reklamach, ponieważ miałem kilka starszych, które miały nieco inne formatowanie na początku i na końcu. Polub tą stronę.

Ale z drobnymi poprawkami, zmieniając tylko precyzyjne tagi dla początku / końca, mogłem ponownie uruchomić SQL i usunąć je również.

Ta technika będzie działać w celu usunięcia wszelkich treści, które znajdują się w treści postu WordPress. To jest piękno posiadania postów w bazie danych MySQL, możesz po prostu uruchomić polecenia SQL, aby manipulować tysiącami postów naraz - oszczędzając ogromną ilość pracy ręcznej. Przed rozpoczęciem wykonaj kopię zapasową bazy danych!

Czy masz jakieś inne ciekawe zastosowania dla tego polecenia SQL? Spróbuj w swojej własnej bazie danych WordPress i przekonaj się, jak dobrze to działa. Podziel się swoimi doświadczeniami i opiniami w sekcji komentarzy poniżej.

Zdjęcia: Shutterstock




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.