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

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top