【问题标题】:Import WordPress post images as featured image from external URL从外部 URL 导入 WordPress 帖子图像作为特色图像
【发布时间】:2015-11-29 14:08:32
【问题描述】:

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

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

如何做到这一点?我知道有些插件会显示来自外部 URL 的特色图片,但我实际上需要将图片导入同一台服务器(因为新网站是在不同的服务器上构建的,因此域 DNS 将更新为live - 使旧的完整路径 URL 失效)。

【问题讨论】:

    标签: wordpress image import


    【解决方案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。

    有了这个,我们就拥有了实现目标的所有必要组件。现在使用set_post_thumbnail()set_post_thumbnail() 使用 post id 和 attachment 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
    

    【讨论】:

    • 非常感谢亲爱的 :) 你节省了我的时间。
    【解决方案2】:

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

    假设您将所有记录从 csv 转储到一个数组中,它有 1000 个索引,每个索引包含 2 个项目“post_id”和“image_url”。现在第一项的 image_url 将位于 $csv_items[0]['image_url']。一旦你有了这个,你可以简单地 foreach 数组并将它们附加到相关的帖子 ID。

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

    【讨论】:

    • 这会将图像附加到帖子中,但不会将图像设置为帖子的特色图像 - 这是操作要求的。为此,我们可以使用media_sideload_image 中的$return 参数并将其设置为id。这将为我们提供附件 ID,我们可以在 set_post_thumbnail 中使用它来将图片设置为帖子的特色图片。
    【解决方案3】:

    @omer Farooq 的回答很有帮助,但要对此进行扩展并将图片设置为帖子的特色图片(按照 OP 的要求),您可以执行以下操作:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      • 2013-01-21
      • 1970-01-01
      • 2014-04-28
      • 2018-06-07
      • 2016-05-04
      相关资源
      最近更新 更多