Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.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
WordPress.com到WordPress.org的迁移:如何下载wp内容文件夹?_Wordpress_Migration - Fatal编程技术网

WordPress.com到WordPress.org的迁移:如何下载wp内容文件夹?

WordPress.com到WordPress.org的迁移:如何下载wp内容文件夹?,wordpress,migration,Wordpress,Migration,让我们假设官方WordPress导入/导出插件不能在所有主机上以及本地主机上工作。假设可以导入帖子,但不能导入媒体。假设WordPress.com不提供从其网站免费下载所有媒体的可能性 目前托管在WordPress.com上 数以吨计的上传图像以如下方式托管: 等等 可能性1:有没有一个工具可以下载博客上的所有图片,同时保留文件夹结构(我还没有找到) 可能性2:是否可以使用XML导出文件从WordPress.com下载所有媒体(尤其是图像),但不需要官方的WordPress导入工具(无需为XM

让我们假设官方WordPress导入/导出插件不能在所有主机上以及本地主机上工作。假设可以导入帖子,但不能导入媒体。假设WordPress.com不提供从其网站免费下载所有媒体的可能性

目前托管在WordPress.com上

数以吨计的上传图像以如下方式托管:

等等

可能性1:有没有一个工具可以下载博客上的所有图片,同时保留文件夹结构(我还没有找到)

可能性2:是否可以使用XML导出文件从WordPress.com下载所有媒体(尤其是图像),但不需要官方的WordPress导入工具(无需为XML文件编写自定义解析器)


通过对数据库进行简单的搜索/替换,可以替换数据库中的主机并上载提取的图像。也欢迎使用更好的解决方案。

使用以下脚本解决了此问题。这可能对每个有相同问题的人都有帮助:

(index.php)


从WordPress.com中选择XML导出文件(逐个)。使用相同的文件执行脚本,直到看到“成功”:

... 去下载他们所有!
(functions.php)


你可以
据我所知,wordpress.com上禁止使用任何自定义代码:-p官方解决方案是“使用wordpress导入器”,但对大多数人来说,它根本不起作用,它的评级也很差:-/Hm。你至少可以下载一个数据库转储吗?在这种情况下,您可以设置本地主机副本(仅更新wp_选项'siteurl'和'home'),并获取所有媒体帖子的URL(post_type
附件
)。您可以制作一个小PHP脚本来查询这些帖子,并一个接一个地下载图片。我会建议使用命令行oneliner下载所有图像。但是,我看到你想要一点脚本;不应使用超过3行的PHP。说到wordpress,通常情况就是这样。
<?php include('functions.php'); ?>
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <form action="#" method="post" enctype="multipart/form-data">
          Choose the XML export file from WordPress.com (one-by-one). Execute the script with the same file until you see "success":<br> 
            <input name="myfile" type="file" size="50" accept="text/*"> 
          </p>  
          <button type="submit">... go download em all!</button>
        </form>
    </body>
</html>
<?php

if (isset($_FILES['myfile']) && ($_FILES['myfile']['error'] == UPLOAD_ERR_OK)) {
    // $xml = simplexml_load_file($_FILES['myfile']['tmp_name']); 

    $filestr = file_get_contents($_FILES['myfile']['tmp_name']);
    $matches = null;
    $returnValue = preg_match_all('/https:\\/\\/mydomain.files.wordpress.com\\/[0-9]{4}\\/[0-9]{2}\\/[^<>\\/]+(\\.jpg|.png|.gif|.jpeg|.bmp)/',$filestr,$matches);



    foreach($matches[0] as $image_url) {
        $rep = str_replace("https://mydomin.files.wordpress.com",'',$image_url);
        $save_path = "/images".$rep;

        // if not image already downloaded
        if(!file_exists(dirname(__FILE__).$save_path)) {
            $img_only = strrchr($save_path,"/");
            $path = dirname(__FILE__).str_replace($img_only,"",$save_path);
            if(!is_dir($path)) {
                mkdir($path, 0777,true);
            }
            file_put_contents(dirname(__FILE__).$save_path, fopen($image_url, 'r'));
        }
    }
    // if not reached, repeat the script
    echo "success";

}