WordPress – il nuovo plugin installato non salva i dati
Dovevo installare un paio di plugin in un sito e configurarli, ma la configurazione mi risultava impossibile.
Per prima cosa nel frontend non vedevo il cambiamento ma la causa era proprio che la configurazione che avevo scelto per il plugin, per qualche motivo non veniva salvata.
Bel problema.
Il plugin doveva semplicemente mostrare il tempo di lettura di un articolo impostando un numero di caratteri letti al minuto. Non era sta gran cosa.
Plugin del genere solitamente salvano le impostazioni scelta nella tabella wp_options e quindi sono andata nel data base a vedere cosa poteva esserci di strano in quella tabella. E ho trovato parecchie cose strane.
La prima era sicuramente che non riuscivo a modificare i record della tabella a mano in phpmyadmin.
Molto strano.
E poi non c’era la possibilità di cancellare un record o una serie di record tramite la solita checkbox ad inizio di ogni riga.
Controllo meglio e mi accorgo che la tabella non ha un indice.
Com’è possibile?
Eh lo fanno, lo fanno, direbbe la comparsa nel film Bianco Rosso e Verdone.
In più vedo che molti option_id hanno un valore duplicato e quindi è impossibile settare seduta stante una chiave univoca, quella che serve per far funzionare bene la tabella.
Devo trovare una soluzione.
Tabella dei contenuti
Assegnare un valore progressivo a option_id
Dobbiamo assegnare a queste righe un nuovo option_id univoco, basato sull’AUTO_INCREMENT della tabella.
Trova le righe con option_id = 0
Prima verifica quante righe hanno option_id = 0:
SELECT COUNT(*) FROM wp_options WHERE option_id = 0;
Se ci non sono molte righe, puoi procedere con la correzione manuale.
Trova l’ultimo option_id disponibile
Otteniamo l’ultimo valore usato per assegnare gli ID progressivamente:
SELECT MAX(option_id) FROM wp_options;
Supponiamo che l’ultimo option_id valido sia 15000, allora assegneremo ai record 0 gli ID partendo da 15001.
Assegna ID progressivi alle righe con option_id = 0
Esegui questa query per aggiornare progressivamente i valori:
SET @new_id = (SELECT MAX(option_id) FROM wp_options); UPDATE wp_options SET option_id = (@new_id := @new_id + 1) WHERE option_id = 0;
Cosa fa questa query?
Usa una variabile @new_id per tenere traccia dell’ultimo ID usato.
Assegna un valore progressivo a tutte le righe che avevano option_id = 0.
Ora gli ID sono univoci e corretti!
Ripristina AUTO_INCREMENT
Ora che option_id è sistemato, aggiorniamo l’indice AUTO_INCREMENT per evitare problemi futuri:
ALTER TABLE wp_options AUTO_INCREMENT = (SELECT MAX(option_id) + 1 FROM wp_options);
Se vuoi un ulteriore consiglio, controlla che la colonna option_id sia settata in AI (autoincrement), perchè per esempio la mia non lo era e dopo aver fatto tutte le procedure qui sopra descritte ancora il plugin non funzionava.
Dopo averla settata in AI tutto è risultato funzionante come doveva essere.
Lascia un Commento
Vuoi partecipare alla discussione?Sentitevi liberi di contribuire!