如何从URL检索图像并设置为特色图像/后缩略图


17

给定一个Vimeo ID,我可以通过Vimeo Simple API从视频中检索缩略图。而不是每次页面加载时都调用API,而是想使用save_post挂钩将图像设置为帖子缩略图(类似于此问题)。

我的问题是我不熟悉php中的URL调用。我想知道:

  1. 与相比,使用curl等方法的好处/缺点WP_Http。这个比那个好吗?

  2. 我应该调用函数以成功设置帖子缩略图的顺序。

任何帮助将不胜感激。


有人知道吗?我也在尝试这样做。

Answers:


12

我最喜欢的处理此问题的方法是使用我在另一篇堆栈文章中发现的一些文档化功能: media_sideload_image

它的工作原理是:将图像URL提取到WordPress上传目录,然后将图像与帖子的附件关联。

您可以这样尝试:

// 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);
}  

4

@David John Smith

1.)如果您使用的是WordPress,请(几乎)始终使用WP_Http;这是我喜欢使用WordPress的众多优点之一。为什么调用它而不是CURL?好吧,因为它具有更好的语法,并且如果CURL可用,它将调用CURL。如果不是,则从其他3个选项之一中进行选择。因此,这确实是一个绝妙的工具。

2.)要回答第二个问题,我需要知道如何命名要下载的文件?


谢谢迈克。至于帖子缩略图,我并不在乎它们的命名方式,我只想通过post_thumbnail()或访问与帖子相关的缩略图get_post_meta()。我想用帖子ID命名是很有意义的。
大卫·约翰·史密斯

这事有进一步更新吗?
NetConstructor.com 2010年

@NetConstructor-很难跟踪处于“待定”状态的问题,所以没有。我刚刚在书签栏上创建了一个“待处理”文件夹,然后看看是否能与之保持一致。但是,我现在没有时间来做这个,所以必须回到它身上。
MikeSchinkel 2010年

@Mike-谢谢Mike,只是认为您可能已经在这里找到了解决方案,因为您似乎是这方面的大师:-)
NetConstructor.com 2010年

@ NetConstructor.com-哈哈!谢谢,我只是调试器的主人,仅此而已。:)
MikeSchinkel 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.