WordPress non ha un modo integrato per rimuovere i dati dei campi personalizzati. Vorrei che ci fosse, ma capisco anche che tale funzionalità potrebbe portare le persone a danneggiare inavvertitamente il loro sito. Probabilmente l’hanno omesso per motivi di sicurezza. Una delle gioie di WordPress è che è comune che i plugin inattivi lascino vecchi dati nel database. Ciò include molti campi personalizzati. Quindi alcune persone cercano di eliminare i dati dei campi personalizzati dal database.
Il plugin potrebbe essere scomparso da tempo e non esserci più, ma i campi personalizzati che crea sono rimasti indietro e fermi lì. E a seconda di quanto è vecchio il tuo sito o di quanti plugin hai usato in passato, potresti ritrovarti con un sacco di dati di campi personalizzati fermi lì senza fare nulla. Inoltre, se hai utilizzato qualcosa come Advanced Custom Fields e hai rimosso dei campi personalizzati, non rimuoverai quei dati dal database. Anche se non riesci più a vedere i campi personalizzati nell’interfaccia utente, i vecchi valori dei campi sono ancora lì.
WordPress ha una varietà di voci che contengono informazioni aggiuntive sul tuo database. Ad esempio, i tuoi utenti hanno un indirizzo email, un sito web, una biografia; i tuoi post hanno un contenuto, un titolo, un estratto; i commenti hanno un autore, un campo email e così via. Queste informazioni possono a volte essere duplicate o orfane (non appartenenti a nulla). In questi casi, questi dati sono semplicemente inutili e possono rendere disordinato il database di WordPress. Pertanto, dovrebbero essere ripuliti per migliorare le prestazioni e ottenere un database ordinato.
Innanzitutto definiamo i termini “orfano” e “duplicato”:
Diamo ora un’occhiata ai singoli tipi di metadati.
postmeta
.usermeta
.commentmeta
.termmeta
del database (utilizzata dai metadati dei termini) può anche essere utilizzata da WordPress per tracciare e analizzare il comportamento e l’attività degli utenti correlati ai termini.term_relationships
del database. Questa è chiamata relazione tra termini.Il database è il componente più importante del tuo sito web. È molto delicato. Devi effettuare il backup dell’intero sito web, incluso il database, prima di apportare modifiche al database stesso. Se non lo fai, rischi di perdere i dati del sito web. Inoltre, non siamo responsabili per eventuali danni che arrechi al tuo sito web.
Puoi utilizzare il plugin Modifica campi personalizzati.
Questo plugin è semplicistico. Ma fa il suo lavoro, prima di tutto… esegui il backup del tuo database!
Stai per eliminare dati grezzi dal tuo database WordPress, quindi esegui prima un backup. Se finisci per rovinare qualcosa, avrai la possibilità di invertire il danno.
Una volta effettuato il backup, vai su Strumenti > Edit custom fields.
Vedrai un grande elenco di tutti i tuoi campi personalizzati. Saranno elencati in base al nome del campo grezzo, così come sono archiviati nel database.
Ora, spetta a te capire qual è lo scopo di quei campi. In alcuni casi, puoi capirlo semplicemente guardando. La maggior parte dei plugin aggiungerà al nome del campo il nome del plugin stesso. Se è così, puoi determinare rapidamente se quei campi sono ancora in uso o meno.
Se hai dubbi sull’utilizzo di un campo, puoi fare 2 cose:
Per eliminare i dati dei campi personalizzati, spunta semplicemente i campi che vuoi eliminare. Quindi, scorri verso il basso e premi il pulsante per eliminare quei campi. Apparirà una schermata di conferma che mostra i campi selezionati e un riepilogo dei post a cui sono allegati tali campi.
Se tutto sembra a posto, premi il pulsante per confermare ed eliminare definitivamente i campi.
Nel tempo, man mano che i post vengono aggiornati, creati o eliminati, la tabella
wp_postmeta può diventare grande e inibire le prestazioni del tuo sito web. In questo articolo, ti mostreremo come ripulire i vecchi metadati dei post non necessari dalla tabella
wp_postmeta per aiutare il tuo sito WordPress a funzionare in modo più efficiente.
Naviga sul tuo database e accedi al phpmyadmin e avvia il comando:
SELEZIONA * DA wp_postmeta pm SINISTRA JOIN wp_posts wp SU wp.ID = pm.post_id DOVE wp.ID È NULL; ELIMINA pm DA wp_postmeta pm SINISTRA JOIN wp_posts wp SU wp.ID = pm.post_id DOVE wp.ID È NULL;
PHPMyAdmin ti farà sapere quanti elementi ha rimosso o dirà che il risultato è vuoto, il che significa che non è stato trovato nulla.
File multimediali inutilizzati
Per eliminare i file multimediali inutilizzati:
Per rimuovere in un colpo solo i file multimediali inutilizzati, utilizzare il seguente comando nella scheda SQL:
DELETE FROM wp_posts WHERE post_type = 'attachment' AND post_parent = 0;
Analogamente a quanto avviene per i commenti spam, esegui la seguente query per identificare tutti i commenti che non sono stati approvati:
SELECT * FROM wp_comments WHERE comment_approved = 0;
Quindi, puoi eliminare questi commenti eseguendo la seguente query:
DELETE FROM wp_comments WHERE comment_approved = 0;
Clicca esegui per eseguire il comando.
Per eliminare le revisioni dei post, immettere il seguente comando nella casella di query SQL e fare clic su Vai per eseguirlo:
DELETE FROM wp_posts WHERE post_type = "revision";
Per un controllo più granulare, l’alternativa più sicura è utilizzare un plugin dal nostro elenco consigliato.
Per rimuovere i tag inutilizzati in phpMyAdmin, puoi utilizzare una combinazione di query SQL. Esegui la seguente query per identificare tutti i tag che non sono associati ad alcun post o contenuto:
SELECT * FROM wp_terms AS t LEFT JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = 'post_tag' AND tt.count = 0;
Questa query elencherà tutti i tag che non sono associati a post o contenuti. Assicurati che l’elenco contenga solo i tag che vuoi eliminare.
Per eliminare questi tag eseguire la seguente query:
DELETE FROM wp_terms WHERE term_id IN ( SELECT term_id FROM wp_term_taxonomy WHERE count = 0 );
Questa query eliminerà tutti i tag che hanno un conteggio pari a zero, ovvero quelli che non sono associati ad alcun post o contenuto.
Esistono diversi modi per rilevare le immagini che non sono più utilizzate in alcun contenuto all’interno del tuo sito web WordPress. Il più efficace è cercarle nel database WordPress.
Per questo dobbiamo sapere che le immagini che hai caricato nella libreria multimediale di WordPress sono memorizzate nella tabella wp_posts
come se fossero un post o una pagina. Ciò che le distingue dagli altri contenuti memorizzati in questa tabella è che hanno il valore dell’allegato nella post_type
colonna.
SELECT * FROM wp_posts i WHERE i.post_type = 'attachment' AND NOT EXISTS (SELECT * FROM wp_posts p WHERE p.ID = i.post_parent) AND NOT EXISTS (SELECT * FROM wp_postmeta pm WHERE pm.meta_key = '_thumbnail_id' AND pm.meta_value = i.ID) AND NOT EXISTS (SELECT * FROM wp_posts p WHERE p.post_type <> 'attachment' AND p.post_content LIKE CONCAT('%',i.guid,'%')) AND NOT EXISTS (SELECT * FROM wp_postmeta pm WHERE pm.meta_value LIKE CONCAT('%',i.guid,'%'))
Seleziona le tabelle verificando che le immagini non esistano più, prosegui alla rimozione.
I transienti sono dati temporanei utilizzati per memorizzare nella cache i dati e velocizzare le prestazioni del tuo sito web. Tuttavia, se non vengono curati regolarmente, possono iniziare a danneggiare la tua velocità. Ecco come rimuovere i transienti in una pulizia del database WordPress:
DELETE FROM wp_options WHERE option_name LIKE '_transient_%';
Se hai accesso a uno strumento di gestione del database come phpMyAdmin, puoi eseguire le seguenti query per selezionare i metadati desiderati e quindi eliminarli utilizzando il tuo metodo preferito, eseguendo la DELETE
query appropriata o selezionando le righe da eliminare con il mouse.
Ricordatevi di sostituire il prefisso del database in tutti i nomi di database con il prefisso del database effettivo, che potrebbe essere diverso da wp_
.
SELECT * FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts);
SELECT * FROM wp_usermeta WHERE user_id NOT IN (SELECT ID FROM wp_users);
SELECT * FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_ID FROM wp_comments);
SELECT * FROM wp_termmeta WHERE term_id NOT IN (SELECT term_id FROM wp_terms);
SELECT tr.*, tt.*, wt.name, wt.slug FROM wp_term_relationships AS tr INNER JOIN wp_term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id INNER JOIN wp_terms AS wt ON tt.term_id = wt.term_id WHERE tt.taxonomy != 'link_category' AND tr.object_id NOT IN (SELECT ID FROM wp_posts);
Il risultato mostrerà il numero di duplicazioni (colonna count
) di qualsiasi meta_key
e meta_value
combinazioni per qualsiasi post_id
.
SELECT COUNT(meta_id) AS count, post_id, meta_key, meta_value FROM wp_postmeta GROUP BY post_id, meta_key, meta_value HAVING count > 1;
Il risultato mostrerà il numero di duplicazioni (colonna count
) di any meta_key
e meta_value
di any user_id
.
SELECT COUNT(umeta_id) AS count, user_id, meta_key, meta_value FROM wp_usermeta GROUP BY user_id, meta_key, meta_value HAVING count > 1;
Il risultato mostrerà il numero di duplicazioni (colonna count
) di any meta_key
e meta_value
di any comment_id
.
SELECT COUNT(meta_id) AS count, comment_id, meta_key, meta_value FROM wp_commentmeta GROUP BY comment_id, meta_key, meta_value HAVING count > 1;
Il risultato mostrerà il numero di duplicazioni (colonna count
) di any meta_key
e meta_value
di any term_id
.
SELECT COUNT(meta_id) AS count, term_id, meta_key, meta_value FROM wp_termmeta GROUP BY term_id, meta_key, meta_value HAVING count > 1;