Programmazione ottenere immagini da URL e salvare nella cartella uploads
-
16-10-2019 - |
Domanda
Io sono coinvolto in una grande migrazione da un altro CMS WordPress. Abbiamo una copia del database ed abbiamo trovato il modo di estrarre il contenuto e la programmazione di creare post WordPress da utilizzando un'istanza della classe wpdb
.
Tuttavia, ci sono un paio di migliaia di immagini che vorremmo tirare tutto automaticamente, generare i vari formati, e quindi collegare ai posti, di risparmiare circa una settimana di lavoro!
C'è un modo per ottenere un'immagine da un sito remoto tramite URL e salvarlo nella mia cartella wp-arrivi? Credo che questo usi wp_http
ma sono familiarità con questo.
Una volta che ho l'immagine e salvato io sono ok come posso quindi utilizzare wp_generate_attachment_metadata
per creare le varie dimensioni e wp_insert_attachment
per collegarlo a un post.
Grazie Simon
Soluzione
In realtà c'è una grande funzione che farà tutte e tre queste cose per voi:
media_sideload_image( $url, $post_id, $description );
Il primo argomento è l'URL remoto dell'immagine che si desidera scaricare. Il secondo argomento è l'id postale del posto al quale si desidera associare l'immagine. Il terzo argomento è facoltativo, ma sarà una descrizione se incluso.
suggerirei trovare un modo per acceleratore i download in modo che non si tiene timeout, ad esempio limitando il numero di immagini che tira dentro a traino e impostando l'importatore di rinfrescarsi tra i download, o utilizzando AJAX per fare loro uno alla volta in modo asincrono.
Altri suggerimenti
risposta di Giovanni è corretta Re: usando media_sideload_image
, basta notare che potrebbe essere necessario richiedere questi script prima, se non si sta facendo questo nel contesto di WP Admin:
require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');
https://codex.wordpress.org/Function_Reference/media_sideload_image#Notes