Obtenga imágenes de forma programada por URL y guárdelas en la carpeta de subidas

12

Estoy involucrado en una gran migración de otro CMS a WordPress. Tenemos una copia de la base de datos y hemos averiguado cómo extraer el contenido y crear publicaciones de WordPress mediante programación utilizando una instanciación de la clase wpdb .

Sin embargo, hay un par de miles de imágenes que nos gustaría desplegar automáticamente, generar los distintos tamaños y luego adjuntarlas a las publicaciones, para ahorrar aproximadamente una semana de trabajo.

¿Hay alguna forma de obtener una imagen de un sitio remoto por URL y guardarla en mi carpeta wp-uploads? Supongo que esto usa wp_http pero no estoy familiarizado con eso.

Una vez que obtuve la imagen y la guardé, estoy bien porque puedo usar wp_generate_attachment_metadata para crear los distintos tamaños y wp_insert_attachment para adjuntarla a una publicación.

Gracias Simon

    
pregunta Simon Blackbourn 18.03.2011 - 15:41

2 respuestas

24

En realidad, hay una gran función que hará las tres cosas por ti:

media_sideload_image( $url, $post_id, $description );

El primer argumento es la dirección URL remota de la imagen que desea descargar. El segundo argumento es el ID de la publicación a la que desea adjuntar la imagen. El tercer argumento es opcional, pero será una descripción si se incluye.

Le sugeriría encontrar una manera de acelerar las descargas para que no se agote el tiempo de espera, como limitar la cantidad de imágenes que obtiene por carga y configurar el importador para que se actualice entre las descargas, o usar AJAX para hazlos uno a uno de forma asíncrona.

    
respondido por el John P Bloch 18.03.2011 - 15:56
1

La respuesta de John es correcta con respecto a: usando media_sideload_image , solo tenga en cuenta que es posible que necesite estos scripts antes si no lo hace en el contexto de 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');

Consulte enlace

    
respondido por el bryceadams 24.08.2016 - 10:47

Lea otras preguntas en las etiquetas