Jak usunąć wersje postów?

9

Nie ustawiłem limitu liczby poprawek, co sprawia, że ​​niektóre posty zawierają więcej niż 20 poprawek, więc jak je usunąć?

Nawiasem mówiąc, używam WPMU i mam wiele blogów, więc jak usunąć wersje WordPress dla wszystkich moich blogów?

hugemeow
źródło

Odpowiedzi:

10

Jest to znacznie bezpieczniejsze zapytanie, które usunie powiązane wpisy z postmeta i term_relationship, w przeciwieństwie do zapytania deathlocks w jego odpowiedzi.

Zmień {id} na identyfikator każdej tabeli postów na blogu. Możesz połączyć to zapytanie, aby uruchomić wszystkie tabele postów jednocześnie, ale najpierw wypróbuj to na jednej tabeli. Użyłem go wiele razy na pojedynczych instalacjach WP.

DELETE a,b,c
FROM wp_{id}_posts a
LEFT JOIN wp_{id}_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_{id}_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'

Po uruchomieniu zoptymalizuj bazę danych w phpmyadmin.

I dodaj ten wiersz u góry wp-config.php, aby zapobiec przyszłym zmianom:

define('WP_POST_REVISIONS', 0);

lub zapisz jedną wersję:

define('WP_POST_REVISIONS', 1);
markratledge
źródło
Masz rację, to też jest o wiele wydajne ... opublikowałem moją odpowiedź w pośpiechu i nie zauważyłem też części WP MU. +1.
deathlock
i jak usunąć poprawki, z wyjątkiem, powiedzmy, ostatnich 3?
Matoeil,
2

Istnieje również wtyczka WP Optimize, która może ci w tym pomóc

Ze strony:

WP-Optimize to narzędzie do czyszczenia i optymalizacji baz danych WordPress 2.9 ++. Nie wymaga PhpMyAdmin do optymalizacji tabel bazy danych.

Pozwala usunąć poprawki postów, komentarze w kolejce spamu, niezatwierdzone komentarze w ciągu kilku kliknięć.

darronz
źródło
Opisz, co robi wtyczka i jak rozwiązuje problem.
fuxia
1
Istnieje wiele wtyczek, które czyszczą wersje i optymalizują bez phpmyadmin; żaden z nich nie jest wyraźnie określony do współpracy z WPMU lub wieloma witrynami.
markratledge
czy ta wtyczka zaszkodzi mojej bazie danych?
hugemeow
Korzystałem z wtyczki na kilku stronach, które prowadzę bez żadnych problemów. Ale zawsze warto najpierw wykonać kopię zapasową bazy danych (ale jest to po prostu najlepsza praktyka).
darronz
0

Aby usunąć wszystkie wersje Wordpress, możesz użyć tego zapytania:

DELETE FROM wp_posts WHERE post_type = "revision";

deathlock
źródło
Mam ponad 100 blogów na wpmu, więc powinienem uruchomić DELETE FROM wp_n_posts WHERE post_type = "revision"; n razy, prawda? ale to jest dość nudne :(
hugemeow
0

Możesz również dodać ten kod do functions.phppliku swojego motywu :

if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', 3);
if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', false);

Ten kod sprawdza, czy WP_POST_REVISIONSzostał ustawiony limit wp-config.php, a jeśli go nie ma, przekazuje parametr do funkcji, która ogranicza poprawki po. W powyższym przykładzie posty są ograniczone do 3 wersji.

Jest to dobre rozwiązanie przy tworzeniu motywów dla osób, które nie wiedzą, jak (lub nie chcą) dodawać kodu.

Zaczerpnięte z wp-functions.com

NickMcB
źródło
2
Ta odpowiedź nie mówi o usuwaniu wersji. Ale to dobra rada, jak wyłączyć wersje przyszłych treści.
Nilambar Sharma
0

Możesz użyć wtyczki WP Sweep do czyszczenia wersji po. Po aktywacji wtyczki przejdź do Narzędzia »Sweep, aby wyczyścić bazę danych WordPress.

Ashin
źródło
0

Dzięki za odpowiedź, markratledge. Coś w składni dotyczącej {id} nie działało dla mnie. Zmieniłem {id} na 4009, jeden z moich identyfikatorów postów, ale bez powodzenia. Znalazłem rozwiązanie na https://dev-notes.eu/2017/11/manage-and-safely-delete-revisions-in-wordpress/

DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision';

To działało dobrze.

feli_x
źródło