Cómo recuperar la imagen de la URL y establecerla como imagen destacada / miniatura de publicación

17

Con una identificación de Vimeo, puedo recuperar una miniatura del video a través de Vimeo Simple API. En lugar de llamar a la API cada vez que se carga mi página, quiero configurar la imagen como la miniatura de la publicación usando el save_postgancho (similar a esta pregunta ).

Mi problema es que no estoy familiarizado con las llamadas URL en php. Me gustaría saber:

  1. Los beneficios / inconvenientes de usar un método como curl en comparación con WP_Http. ¿Es uno mejor que el otro?

  2. El orden en el que debo llamar a las funciones para establecer con éxito la miniatura de la publicación.

Cualquier ayuda sería muy apreciada.

David John Smith
fuente
¿Alguien ha descubierto esto? Estoy tratando de hacer esto también.

Respuestas:

12

Mi forma favorita de manejar este problema ha sido usar una pequeña función documentada que descubrí en otra publicación de la pila: media_sideload_image

Funciona buscando una url de imagen en el directorio de carga de WordPress y luego asociando la imagen a los archivos adjuntos de una publicación.

Puedes probarlo así:

// required libraries for media_sideload_image
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');

// $post_id == the post you want the image to be attached to
// $video_thumb_url == the vimeo video's thumb url
// $description == optional description

// load the image
$result = media_sideload_image($video_thumb_url, $post_id, $description);

// then find the last image added to the post attachments
$attachments = get_posts(array('numberposts' => '1', 'post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC'));


if(sizeof($attachments) > 0){
    // set image as the post thumbnail
    set_post_thumbnail($post_id, $attachments[0]->ID);
}  
sxalexander
fuente
4

Hola @David John Smith :

1.) Si está en WordPress, (casi) siempre use WP_Http; Es una de las muchas cosas que me encantan de trabajar con WordPress. ¿Por qué llamarlo y no CURL? Bueno, porque tiene una sintaxis más agradable y llama a CURL si CURL está disponible. Si no, elige una de las otras 3 opciones. Así que realmente es una pieza brillante de kit.

2.) Para responder a la segunda pregunta, ¿necesitaré saber cómo desea nombrar los archivos que está descargando?

MikeSchinkel
fuente
Gracias Mike En cuanto a las miniaturas de las publicaciones, no me importa cómo se llamen, solo me gustaría poder acceder a ellas en relación con una publicación, ya sea por post_thumbnail()o get_post_meta(). Supongo que tendría sentido nombrarlo con la ID de la publicación.
David John Smith
¿Algún avance en esto?
NetConstructor.com
@NetConstructor: es realmente difícil hacer un seguimiento de las preguntas que están en estado "pendiente", así que no. Acabo de crear una carpeta "pendiente" en mi barra de marcadores, veré si no puedo ser más coherente con eso. Pero, no tengo tiempo en este momento, así que tendré que volver a ello.
MikeSchinkel
@ Mike - gracias Mike, solo pensé que podrías haber tenido una solución aquí porque, entre otras cosas, pareces ser el maestro de estas cosas :-)
NetConstructor.com
@ NetConstructor.com - ¡LOL! Gracias, solo soy el maestro del depurador, eso es todo. :)
MikeSchinkel