导入帖子中引用的所有媒体

时间:2017-08-29 作者:Terence Eden

我想导入媒体库中的所有图像和;我的博客帖子中引用的视频。

我可以使用get_attached_media() 要在页面上获取引用的图像,即使它们没有正式附加media_handle_sideload() 要将介质插入库中

背景

我已经移动了主机,我的所有博客帖子都可用,我的所有图片都在/wp-content/uploads/2001/08

我有大约13000张图片,共120个子文件夹(10年的博客生涯☺).

以下是我尝试过但没有奏效的方法:

导入WXR-导入帖子,但不会导入同一服务器上的图像

  • Media From FTP - 无法处理大量图像
  • Add from Server - 仅对每个文件有效。我无法选择整个文件夹及其所有子文件夹<img src="https://example.com/..., 然后将其导入媒体库-将媒体保留在同一位置。附于岗位(&P);重新生成缩略图将是一个额外的好处,但不是必要的。

  • 2 个回复
    SO网友:Tom J Nowell

    我是否可以使用get\\u attached\\u media()获取页面上引用的图像,即使它们没有正式附加否,如果未连接,则不会连接。我想你是在谈论你帖子中的非现场图片吧?

    如果是这样,您需要下载它们,创建一个附件帖子,将其附加到帖子,然后在内容中替换URL

    我应该使用media\\u handle\\u sideload()将介质插入库中吗

    SO网友:Terence Eden

    我最终使用了WP-CLI 再加上一点重击来解决这个问题。

    将所有post ID获取到文件中./wp-cli.phar post list --field=ID > posts.txtcat posts.txt | while read line ; do ./wp-cli.phar post get $line --field=post_content > test/$line.html ; donePHP\'s DOMdocument 提取所有图像并生成WP-CLI命令

    <?php

    $start = "https://example.com/blog/";
    
    foreach (glob("*.html") as $file) {
        if($file == \'.\' || $file == \'..\') continue;
        $id = substr($file, 0, -5);
        $html = file_get_contents($file);
        $doc = new DOMDocument();
        $doc->loadHTML($html);
        $images = $doc->getElementsByTagName(\'img\');
    
        foreach($images as $img) {
           $imgSrc = $img->getAttribute(\'src\');
           $starter = substr( $imgSrc, 0, strlen($start) );
           if($starter == $start) {
              $imgLocation = substr( $imgSrc, strlen($start) );
              echo "./wp-cli.phar media import {$imgLocation} --post_id={$id} --skip-copy\\n";
           }
        }
    }
    
    运行方式commands.php > commands.txt运行文件中的所有WP-CLI命令

    • bash commands.txt
    有点复杂,但它起作用了!

    结束

    相关推荐

    如何更改WordPress博客的Uploads文件夹中媒体文件的使用频率

    到目前为止,我可以看到我的媒体文件分为月份和年份,就像2008/09目录一样。但我很担心,因为我目前正在托管一个社区列表网站,可能会导致1000多个上传(这是每个目录最多共享托管的限制)。我最近意识到共享站点中的文件数不能超过500000个。因此,我认为一段时间后,它将变得非常有限。有没有人可以通过将归档频率改为每周而不是每月来解决这个问题?我在谷歌上搜索了一下,但根本找不到答案!或我是不是走错方向了?请帮忙谢谢大家!