Ripristina ID post su un numero intero inferiore a 64 bit


8

Gestisco Wordpress da molti anni e ho circa 26000 post.

Ad un certo punto i miei ID post hanno superato un numero intero a 32 bit e ora sono bloccato nell'uso di Wordpress su un sistema a 64 bit.

Sto vedendo post con ID come 4863166253.

Vorrei passare il mio hosting su un server a bassa potenza come un Raspberry Pi a 32 bit.

Esiste un modo per ripristinare gli ID posta in modo che siano tutti inferiori a 2 miliardi?

Puoi leggere il mio rapporto sui bug di Wordpress qui

Grazie.


Questo è uno dei tuoi plugin che ti guida lì, immagino post_2_post ma è solo una supposizione. Devi effettivamente capire perché hai un numero così alto (nessuna vera quantità di revisioni in tempo reale ti porterà lì, a meno che non sia di nuovo un plug-in a crearli) e solo allora puoi iniziare a pianificare come risolverlo.
Mark Kaplun il

Risposte:


5

Questa risposta è il modo in cui prenderei per risolvere il problema se dovessi affrontarlo, significa che non è la risposta ma una delle possibilità.

Tutte le operazioni che suggerirò dovrebbero essere eseguite su un server di sviluppo / locale su un backup del database e non sulla produzione né sul database originale.

Se hai 26.000 post ma inserisci ID come 4.863.166.253 ci sono miliardi di ID che non vengono utilizzati.

Per risolvere questo problema devi:

Passo 1

  • rimuovere gli ID post non utilizzati. (messaggi eliminati, revisioni)
  • gli orfani rimossi pubblicano meta voci
  • rimuovere le voci relative alla tassonomia degli orfani

Ci sono plugin per l'ambito, ma può essere fatto usando semplici query SQL non elaborate.

Passo 2

Ripristina ID post modificandoli per ricominciare da 1. Questo può essere fatto usando una combinazione di PHP + MySQL: se recuperi la colonna ID post come un array (ad es. Via $wpdb->get_col()), le chiavi dell'array (incrementate di 1) sarebbero nuovi ID post per post il cui ID corrente è in valori di matrice.

Tieni presente che gli ID dei post devono essere modificati in:

  • tabella postale
  • tabella delle relazioni di tassonomia
  • post meta table

Ti suggerisco di eseguire una tale routine su sottoinsiemi di post utilizzando risultati impaginati e non su migliaia di righe nel loro insieme.

Passaggio 3

Imposta l' AUTO_INCREMENTindice sulla tabella dei post per contare il conteggio + 1.

Fatto

Alla fine di questo processo, l'ID post più alto dovrebbe essere facilmente all'interno del limite intero a 32 bit.

Prevenire il limite post viene raggiunto di nuovo

  • Disabilita le revisioni post o limitale in numero (vedi Codex ).

  • Spostare i post più vecchi (2 anni? 5?) In un blog separato in un ambiente multisito, ad esempio site1-archive.example.comper i post in site1.example.com.

    Questo può essere fatto utilizzando WordPress esportatore con l'opzione intervallo di date.

    Se hai intenzione di farlo, è molto meglio se fatto prima di ripristinare gli ID post (passaggio 2 sopra), in questo modo entrambi i 2 blog possono avere un ID post più basso.

    Naturalmente dopo ciò dovresti anche creare un modo per reindirizzare gli URL post archiviati a nuovi URL.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.