Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从外部URL导入WordPress帖子图像作为特色图像_Wordpress_Image_Import - Fatal编程技术网

从外部URL导入WordPress帖子图像作为特色图像

从外部URL导入WordPress帖子图像作为特色图像,wordpress,image,import,Wordpress,Image,Import,我目前有一个CSV文件,它有两列-一列是帖子ID,一列是图片URL。有10000个帖子,因此有10000个图片 我需要将这些导入WordPress并将每个图像设置为特色图像 如何做到这一点?我知道有一些插件会显示来自外部URL的特色图像,但我实际上需要将这些图像导入到同一台服务器上(因为新网站是在不同的服务器上建立的,域名DNS将被更新以上线-使旧的完整路径URL变得无用).Wordpress已经有了一个名为media_sideload_image的内置功能,正是为了实现这种功能。此功能将下载图

我目前有一个CSV文件,它有两列-一列是帖子ID,一列是图片URL。有10000个帖子,因此有10000个图片

我需要将这些导入WordPress并将每个图像设置为特色图像


如何做到这一点?我知道有一些插件会显示来自外部URL的特色图像,但我实际上需要将这些图像导入到同一台服务器上(因为新网站是在不同的服务器上建立的,域名DNS将被更新以上线-使旧的完整路径URL变得无用).

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

因此,假设您将所有记录从csv转储到一个数组,该数组有1000个索引,每个索引有两个项目“post_id”和“image_url”。现在,第一个项目的image\u url将位于$csv\u items[0]['image\u url']。一旦你有了这个,你可以简单地foreach数组并将它们附加到相关的post id上

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

@omer Farooq'的回答很有帮助,但要扩展这一点并将图像设置为帖子的特色图像(如OP要求的),您可以执行以下操作:

//将返回侧面加载的img的附件id
$image=media_sideload_image($image_url,$post_id,$filename,'id');
//设置为特色图像

设置发布缩略图($post\u id,$result)我想添加到davemac的答案中以完成它

您必须以编程方式插入post,并保存函数将返回的post id

然后,您将运行以将图像从url下载到wp站点,并将返回的值保存为变量,该变量是图像的html元素,例如

去掉变量,只剩下src eg
http:mywpsite/wp content/…
,并使用它返回附件id

有了这一点,我们就有了实现目标所需的所有必要组成部分。现在使用post id和附件id使用

就这样

代码看起来有点像

$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
$post\u id=wp\u insert\u post($array)//创建新帖子并保存其id
$img=media\u sideload\u image($url,$post\u id)//从url将图像下载到wpsite
$img=explode(“”,$img)[1];//提取http。。。。从…起
$attId=附件\u url\u到\u posted($img)//获取下载图像的id
设置日志缩略图($post\u id,$attId)//将给定图像设置为帖子的特色图像

这会将图像附加到帖子,但不会将图像设置为帖子的特色图像-这是op要求的。为此,我们可以使用
media\u sideload\u image
中的
$return
参数,并将其设置为
id
。这将为我们提供附件ID,我们可以在
set\u post\u缩略图中使用该ID将图像设置为帖子的特色图像。