Réinitialiser les ID de publication à un entier inférieur à 64 bits

8

J'utilise Wordpress depuis de nombreuses années et j'ai environ 26 000 messages.

À un moment donné, mes identifiants de publication ont dépassé un entier 32 bits et je suis maintenant bloqué dans l'utilisation de Wordpress sur un système 64 bits.

Je vois des messages avec des ID comme 4863166253.

Je voudrais basculer mon hébergement vers un serveur de faible puissance comme un Raspberry Pi 32 bits.

Existe-t-il un moyen de réinitialiser les identifiants de publication afin qu'ils soient tous inférieurs à 2 milliards?

Vous pouvez lire mon rapport de bogue Wordpress ici

Merci.

Mark Waters
la source
C'est l'un de vos plugins qui vous y conduit, je suppose post_2_post mais ce n'est qu'une supposition. Vous devez réellement comprendre pourquoi vous avez un nombre si élevé (aucune quantité réelle de révisions en direct ne vous y amènera, à moins que ce ne soit un plugin qui les crée) et seulement alors vous pouvez commencer à planifier comment y remédier.
Mark Kaplun

Réponses:

5

Cette réponse est la façon dont je prendrais pour résoudre le problème si je devais y faire face, cela signifie que ce n'est pas la réponse mais l'une des possibilités.

Toutes les opérations que je proposerai devraient être exécutées sur un serveur de développement / local sur une sauvegarde de la base de données et non sur la production ni sur la base de données d'origine.

Si vous avez 26 000 messages mais que vous avez un identifiant comme 4 863 166 253, il y a des millions d'identifiants qui ne sont pas utilisés.

Pour résoudre ce problème, vous devez:

Étape 1

  • supprimer les identifiants de publication inutilisés. (messages supprimés, révisions)
  • les orphelins supprimés postent des métadonnées
  • supprimer les entrées de relation de taxonomie des orphelins

Il existe des plugins pour la portée, mais cela peut être fait à l'aide de simples requêtes SQL brutes.

Étape 2

Réinitialisez les identifiants de publication en les changeant pour recommencer à partir de 1. Cela peut être fait en utilisant une combinaison de PHP + MySQL: si vous récupérez la colonne d'identifiant de publication sous forme de tableau (par exemple via $wpdb->get_col()), les clés de tableau (incrémentées de 1) seraient de nouveaux identifiants de publication pour messages dont l'ID actuel est dans les valeurs du tableau.

Notez que les identifiants des publications doivent être modifiés dans:

  • table de poste
  • tableau des relations taxonomiques
  • post meta table

Je vous suggère d'exécuter une telle routine sur des sous-ensembles de publications utilisant des résultats paginés et non sur des milliers de lignes dans leur ensemble.

Étape 3

Définissez l' AUTO_INCREMENTindex de la table de publication sur le nombre de publications + 1.

Terminé

À la fin de ce processus, votre ID de publication supérieur devrait être facilement dans la limite de 32 bits.

Empêcher la limite de publication est à nouveau atteinte

  • Désactivez les révisions après publication ou limitez-les en nombre (voir Codex ).

  • Déplacer des articles plus anciens (2 ans? 5?) Vers un blog séparé sur un environnement multisite, par exemple site1-archive.example.compour les articles dans site1.example.com.

    Cela peut être fait en utilisant l'exportateur WordPress avec l'option de plage de dates.

    Si vous prévoyez de le faire, il est préférable de le faire avant de réinitialiser les identifiants de publication (étape n ° 2 ci-dessus), de cette manière, les deux blogs peuvent avoir un identifiant de publication inférieur.

    Bien sûr, après cela, vous devez également mettre en place un moyen de rediriger les URL de publication archivées vers de nouvelles URL.

gmazzap
la source