Pregunta

Estoy involucrado en una gran migración de otro CMS a WordPress. Tenemos una copia de la base de datos y hemos resuelto cómo extraer el contenido y crear programáticamente WordPress Publics a partir de ella utilizando una instancia de la wpdb clase.

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

¿Hay alguna manera de obtener una imagen de un sitio remoto por URL y guardarla en mi carpeta WP-Suploads? Supongo que esto usa wp_http Pero no estoy familiarizado con eso.

Una vez que tengo la imagen y la guardé, estoy bien, ya que puedo usar wp_generate_attachment_metadata para crear los diversos tamaños y wp_insert_attachment para adjuntarlo a una publicación.

Gracias Simon

¿Fue útil?

Solución

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 URL remota de la imagen que desea descargar. El segundo argumento es la identificación de publicación de la publicación a la que desea adjuntar la imagen. El tercer argumento es opcional, pero será una descripción si se incluye.

Sugeriría encontrar una manera de acelerar las descargas para que no siga el tiempo fuera, como limitar la cantidad de imágenes que atrae por carga y configurar al importador para refrescarse entre descargas, o usar Ajax para hacerlas una a la vez asíncronamente.

Otros consejos

La respuesta de John es correcta con: usar media_sideload_image, solo tenga en cuenta que es posible que deba requerir estos scripts antes si no está haciendo esto dentro del 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');

Ver https://codex.wordpress.org/function_reference/media_sideload_image#notes

Licenciado bajo: CC-BY-SA con atribución
scroll top