Переход WordPress.com на WordPress.org: как загрузить папку wp-content?

77
7

Предположим, что официальный плагин для импорта/экспорта WordPress не работает ни на каждом хосте, ни на локальном хосте. Предположим, что можно импортировать сообщения, но не средства массовой информации. Давайте предположим, что WordPress.com не предлагает бесплатную возможность загрузки всех медиа со своего сайта.

http://example.com/ в настоящее время размещается на WordPress.com

Тонны загруженных изображений размещаются следующим образом:

https://example.files.wordpress.com/2014/11/1.png https://example.files.wordpress.com/2015/11/1.png и т. д....

Возможность 1: есть ли инструмент, который может загружать все изображения, размещенные в блоге, при сохранении структуры папок (я еще не нашел его).

Возможность 2: есть ли возможность загружать все материалы (особенно изображения) из WordPress.com с файлами экспорта XML, но без официального WordPress Importer Tool (без необходимости писать собственный парсер для XML файлов).

С помощью простого поиска/замены в базе данных можно заменить хост в базе данных и загрузить извлеченные изображения. Лучшее решение тоже приветствуется.

спросил(а) 2021-01-19T14:10:08+03:00 6 месяцев назад
1
Решение
118

Решил это со следующим сценарием. Это может быть полезно для всех, имеющих одну и ту же проблему:

(Index.php)

<?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>

(Functions.php)

<?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";

}

ответил(а) 2021-01-19T14:10:08+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема