Comment supprimer les révisions de poste?

9

Je n'ai pas fixé de limite au nombre de révisions, ce qui fait que certains de mes messages ont plus de 20 révisions, alors comment supprimer ces révisions?

Soit dit en passant, j'utilise WPMU et j'ai de nombreux blogs, alors comment supprimer les révisions WordPress pour tous mes blogs?

hugemeow
la source

Réponses:

10

Il s'agit d'une requête beaucoup plus sûre à utiliser et supprimera les entrées associées de postmeta et term_relationship, contrairement à la requête deathlocks dans sa réponse.

Remplacez le {id} par l'id de chaque table de billets de blog. Vous pouvez combiner cette requête pour exécuter toutes les tables de publication à la fois, mais essayez d'abord sur une table. Je l'ai utilisé plusieurs fois sur des installations WP uniques.

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'

Après l'avoir exécuté, optimisez la base de données dans phpmyadmin.

Et ajoutez cette ligne vers le haut de wp-config.php pour éviter de futures révisions:

define('WP_POST_REVISIONS', 0);

ou enregistrez une révision:

define('WP_POST_REVISIONS', 1);
Markratledge
la source
Vous avez raison, c'est aussi beaucoup plus efficace ... j'ai posté ma réponse à la hâte et je n'ai pas remarqué la partie WP MU aussi. +1.
Deathlock
et comment supprimer les révisions, sauf disons les 3 dernières?
Matoeil
2

Il existe également un plugin, WP Optimize qui peut vous aider à le faire

Depuis le site Web:

WP-Optimize est un outil de nettoyage et d'optimisation de base de données WordPress 2.9 ++. Il ne nécessite pas PhpMyAdmin pour optimiser vos tables de base de données.

Il vous permet de supprimer les révisions de poste, les commentaires dans la file d'attente de spam, les commentaires non approuvés en quelques clics.

darronz
la source
Veuillez décrire ce que fait le plugin et comment il résout le problème.
fuxia
1
Il existe de nombreux plugins qui nettoient les révisions et optimisent sans phpmyadmin; aucun d'entre eux n'est clairement indiqué pour fonctionner avec WPMU ou multisite.
markratledge
ce plugin va-t-il nuire à ma base de données?
hugemeow
J'ai utilisé le plugin sur quelques sites que je gère sans aucun problème. Mais c'est toujours une bonne idée de sauvegarder votre base de données en premier (mais c'est juste la meilleure pratique).
darronz
0

Pour supprimer toutes vos révisions Wordpress, vous pouvez utiliser cette requête:

DELETE FROM wp_posts WHERE post_type = "revision";

Deathlock
la source
j'ai plus de 100 blogs sur wpmu, donc je devrais courir DELETE FROM wp_n_posts WHERE post_type = "revision"; pour n fois, non? mais c'est assez ennuyeux :(
hugemeow
0

Vous pouvez également ajouter ce code au functions.phpfichier de votre thème :

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

Ce code vérifie si une WP_POST_REVISIONSlimite a été définie wp-config.php, sinon, il transmet un paramètre à la fonction qui limite les révisions ultérieures. Dans l'exemple ci-dessus, les publications sont limitées à 3 révisions.

C'est une bonne solution lors de la création de thèmes pour les personnes qui ne savent pas (ou ne veulent pas) ajouter du code.

Tiré de wp-functions.com

NickMcB
la source
2
Cette réponse ne parle pas de supprimer des révisions. Mais ses bons conseils sur la façon de désactiver les révisions pour le contenu futur.
Nilambar Sharma
0

Vous pouvez utiliser le plugin WP Sweep pour nettoyer les révisions de poste. Après avoir activé le plugin, allez dans Outils »Balayer pour nettoyer votre base de données WordPress.

Ashin
la source
0

Merci pour la réponse, markratledge. Quelque chose dans la syntaxe concernant le {id} n'a pas fonctionné pour moi. J'ai changé {id} en 4009, l'un de mes identifiants de publication, mais sans succès. J'ai trouvé une solution sur 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';

Cela a bien fonctionné.

feli_x
la source