导入WordPress将图像作为外部URL

时间:2015-11-29 14:08:33

标签: wordpress image import

我目前有一个包含2列的CSV文件 - 一列用于Post ID,另一列用于图像URL。有10,000个帖子,因此有10,000张图片。

我需要将它们导入WordPress并将每个图像设置为精选图像。

如何实现这一目标?我知道有插件会显示来自外部URL的精选图像,但实际上我需要将图像导入到同一台服务器上(因为新网站是在不同的服务器上构建的,域DNS将更新为实时 - 渲染旧的完整路径URL无用。)

3 个答案:

答案 0 :(得分:1)

我想补充一下davemac的答案以完成它。

您必须以编程方式插入wp_insert_post()帖子,并保存该函数将返回的帖子ID。

然后您将运行media_sideload_image(),将图像从url下载到wp站点,将返回值保存为变量,该变量是图像的html元素,例如<img src="http:mywpsite/wp-content/....">

剥离变量,以便您只留下src,例如http:mywpsite/wp-content/....,并将其用于attachment_url_to_postid(),这将返回附件ID。

有了这个,我们就有了所有必要的组件来实现我们的目标。现在,使用帖子ID和附件ID通过set_post_thumbnail()

设置特色图片

就是这样!

代码看起来像

$post_id = wp_insert_post($array);//create new post and save its id
$img = media_sideload_image( $url, $post_id);//download image to wpsite from url
$img = explode("'",$img)[1];// extract http.... from <img src'http...'>
$attId = attachment_url_to_postid($img);//get id of downloaded image
set_post_thumbnail( $post_id, $attId );//set the given image as featured image for the post

答案 1 :(得分:0)

Wordpress已经有一个名为media_sideload_image的内置函数,正是为了实现这种功能。此功能将下载图像并将其附加到您的帖子。

因此,假设您将所有记录从csv转储到数组,并且它有1000个索引,每个索引包含2个项目“post_id”和“image_url”。现在第一项的image_url将是$ csv_items [0] ['image_url']。一旦你有了这个,你可以简单地将数组加到相关的post id上。

<?php 
foreach($csv_items as $csv_item){
    $image = media_sideload_image($csv_item['image_url'], $csv_item['post_id']);
}?>

答案 2 :(得分:0)

@omer Farooq&#39;答案是有帮助的,但为了扩展它并将图像设置为帖子的特色图像(如OP所要求的),您可以执行以下操作:

&#13;
&#13;
// will return the attachment id of the sideloaded img
$image = media_sideload_image( $image_url, $post_id, $filename, 'id' );
    
// set as featured image
set_post_thumbnail( $post_id, $result );
&#13;
&#13;
&#13;