Dove si trova la Libreria Media nel database?
Sto esportando un sito WordPress dal localhost a un host web, e non riesco a importare la Libreria Media, poiché l'host web non riesce a contattare localhost.
Ho caricato tutti i file del localhost da /wp-content/uploads/..., e penso di dover isolare la parte del database MySQL che contiene la Libreria Media, modificare l'URL e poi importare l'SQL nel database dell'host web.
Potete dirmi dove si trova la Libreria Media nel database MySQL?

SELECT * FROM wp_posts WHERE post_type = 'attachment';
Restituirà tutte le voci nella Libreria Media.
Dopo l'esecuzione, puoi esportare la tabella dei risultati come SQL, CSV o qualsiasi altro formato di dati portatile preferisci. Ricorda, se non sei sicuro che le voci esistano già nel tuo database, utilizza l'istruzione INSERT IGNORE
invece di INSERT
. (Questo è possibile tramite il pannello di esportazione in phpMyAdmin o altri client MySQL).
Inoltre, ci sono voci che fanno riferimento alla Libreria Media in ogni articolo, come immagini allegate o immagini miniatura, che sono memorizzate nella tabella wp_postmeta
. WordPress le memorizza così i media si "allegano" agli articoli o alle pagine. Se desideri esportare anche quelli, dovrai utilizzare qualcosa come questo:
SELECT * FROM `wp_postmeta`
WHERE meta_key IN (
'_wp_attached_file',
'_wp_attachment_backup_sizes',
'_wp_attachment_metadata',
'_thumbnail_id'
)
E poi puoi esportarli dove vuoi. Questo è tutto ciò che so riguardo alla Libreria Media in WordPress.

Mi hai offerto un piccolo raggio di luce nel mondo oscuro che è lo sviluppo su WordPress

La Libreria Media risiede sia in wp_posts che in wp_postmeta.
- wp_postmeta contiene l'URL dell'immagine
- wp_posts contiene una voce per ogni inserimento di immagine in un articolo, insieme all'ID del post.
Esportare e importare queste 2 tabelle come SQL non ha funzionato per me - ho ricevuto l'errore 'duplicate entry for key 7'...
Esportare e importare queste 2 tabelle come CSV ha invece funzionato, utilizzando "CSV using load data".
Prima di importare, ho svuotato le 2 tabelle nel database di destinazione.

Un modo alternativo per passare dall'ambiente di sviluppo locale a un host remoto live è utilizzare WP Migrate DB.

SELECT
p.ID,
p.post_title AS title,
p.post_name AS post_name,
(SELECT meta_value from wp_postmeta where post_id = m.meta_value and meta_key='_wp_attachment_metadata') AS meta_value
FROM
wp_posts p,
wp_postmeta m
WHERE
p.post_type = 'post'
AND p.post_status = 'publish'
AND p.id = m.post_id
AND m.meta_key = '_thumbnail_id'
ORDER BY
p.post_date DESC
LIMIT 5;
E poi utilizzare PHP unserialize su 'meta_value'
