Failed to import Media

时间:2013-10-10 作者:Paul

当我用[工具>导出]生成XML文件并在另一个WordPress网站上使用[工具>导入]时,我会得到每种附件帖子类型的“无法导入媒体”。而无法加载的图像是从前一台服务器热链接的,该服务器使用前一台服务器的传输。。。

但是当我从http://codex.wordpress.org/Theme_Unit_Test 那么这个问题就不存在了。有些图像仍然“无法导入媒体”,但这只是30张图像中的5张。他们在XML中有指向自己服务器的URL,但不知何故,[工具>导入]设法下载媒体并用新位置替换这些URL(不再是热链接)。

在没有“无法导入媒体”的情况下,如何使其正常工作?为什么即使是“单元测试”也有一些“无法导入媒体”消息?

10 个回复
SO网友:Merl

当我将WordPress博客从单个WordPress安装移动到多站点安装时,遇到了一个非常类似的问题,该安装具有不同的域名,但IP相同<我发现问题是wp_http_validate_url 如果源IP与目标IP相同,则删除URL的函数
您可以添加过滤器wp_http_validate_url 要防止出现这种情况并允许匹配源IP和目标IP,请执行以下操作:

add_filter( \'http_request_host_is_external\', \'__return_true\' );
有关过滤器挂钩的详细说明以及导入后为何要将其移除,请参阅此答案:https://wordpress.stackexchange.com/a/123313/75573

SO网友:nathanchere

确保您的站点未设置为“私有”。

导出Wordpress博客时,所有文本内容都嵌入到生成的XML文件中。所有二进制内容(图片、文件附件等)导出为URL,指向它们在现有博客上的位置。这就是为什么当你从私人Wordpress博客导入时,你仍然可以导入所有的帖子/等,但所有的图片/等都会失败。

以下是您需要更改当前(2017-06-19)版本设置的地方:

enter image description here

相关Wordpress文档:

https://en.support.wordpress.com/settings/privacy-settings/
请注意,这需要从Wordpress中完成。com帐户的设置,而不是博客本身的设置,这是另一个潜在的困惑点(和挫折)。

SO网友:Imperative Ideas

生成导出文件时,它是在实时服务器上还是在本地主机上?该网页仍然可以访问吗?如果媒体导入失败,则意味着从XML链接出来的图像将出现404。

打开XML文件,查看图像指向的位置。如果打开主题单元XML文件,我们将看到如下行:

<wp:attachment_url>http://wpthemetestdata.files.wordpress.com/2008/06/canola2.jpg</wp:attachment_url>
该文件很明显可以导入。您的attachment\\u url文件说了什么?

SO网友:Claudia

我一直在努力将媒体导入wordpress。来自wordpress的组织。还有com。我设法导入了所有帖子,但图片仍然链接到旧网站。我几乎哭了,因为我意识到唯一的解决方案是手动下载并上传200多张大型图片(导出/导入较小部分的帖子也不起作用)。

在测试了一些插件之后,我找到了一个可以自动导入wordpress媒体的插件。我不敢相信,但它确实起作用了。你必须一个帖子接一个帖子,但还是比手动下载和上传要好。这里是the link 如果有人感兴趣

SO网友:James Revillini

在远程/本地站点上使用某些插件时,可能会发生此问题。

理想情况下,在导出或导入之前禁用两个站点上的所有插件,然后在过程完成后重新激活它们。

如果您试图避免禁用所有插件,那么至少要停用任何影响图像或图像处理的插件。。。最常见的类型可能是那些进行图像优化的类型。

在我的例子中,我在本地站点上激活了EWW图像优化器(我强烈推荐),这导致了这个错误。我禁用了它,成功运行了导入,然后重新激活了它。

SO网友:Subtopic

我终于明白了。

假设我们有domain1。com和domain2。com公司

转到域1。com->;工具->;导出->;媒体

enter image description here

现在转到域2。com->;工具->;导入(上传媒体导出的xml文件)

enter image description here

确保选中下载和导入文件附件。enter image description here

这需要一段时间。当它运行时,我们将导出domain1。com页面或帖子。

打开其中一个的xml文件,并查找和替换domain1。com到域2。com公司

enter image description here

现在,如果另一个导入完成,开始上载修改后的xml导出,猜猜看,它现在将引用您在上次导入中所上载的图像。

SO网友:AMIB

我也有同样的问题,经过数小时的搜索和测试,问题是源服务器由于cPanel中的“热链接保护”处于活动状态而阻止了图像下载。

SO网友:Rick

对于那些不想使用add_filter 或者不知道如何在不创建单独模块的情况下集成它。这里有一个快速简便的技巧来完成它。

打开此文件

vim ./wp-includes/http.php
转到行566 并注释掉以下代码块。

if ( ! apply_filters( \'http_request_host_is_external\', false, $host, $url ) )
  return false;
一旦你把这两行注释掉,就进去添加下面一行。

return true;
继续保存文件并上载XML文件以重试。现在,您将下载所有相关内容。返回并删除注释块和return语句,就可以继续了。

SO网友:kls

在我的例子中,我试图将一个场地从一个软管位置移动到另一个位置。新主机在内部将域的IP设置为自己的服务器(显然),在将其更改为旧服务器后,迁移器知道在哪里查找文件。

SO网友:Jarda Pavlíček

我使用wp cli从另一个站点导入媒体。wp import 总是抱怨Failed to import Media xxxx: Request failed due to an error: A valid URL was not provided. (http_request_failed) 没有导入任何内容。

我通过添加define( \'IMPORT_DEBUG\', true ); 进入wp-config.php 并将导入调用跟踪到deep。结果如下:

#0  wp_validate_redirect / wp-includes/http.php:620
#1  allowed_http_request_hosts / wp-includes/class-wp-hook.php:294
#2  WP_Hook->apply_filters / wp-includes/plugin.php:212
#3  apply_filters / wp-includes/http.php:581
#4  wp_http_validate_url / wp-includes/class-http.php:270
#5  WP_Http->request / wp-includes/class-http.php:635
#6  WP_Http->get / wp-includes/http.php:68
#7  wp_safe_remote_get / wp-content/plugins/wordpress-importer/class-wp-import.php:1008
#8  WP_Import->fetch_remote_file / wp-content/plugins/wordpress-importer/class-wp-import.php:954
#9  WP_Import->process_attachment / wp-content/plugins/wordpress-importer/class-wp-import.php:697
#10 WP_Import->process_posts / wp-content/plugins/wordpress-importer/class-wp-import.php:88
#11 WP_Import->import / phar:.../Import_Command.php:179
#12 Import_Command->import_wxr / phar:.../Import_Command.php:81

Solution 1

在wp-content/themes/{your-theme}/functions中添加以下行。php:

add_filter("http_request_host_is_external", function($allow, $host, $url){
    if (gethostbyname($host) == "your_hostname.com") {
        $allow = true;
    }
    return $allow;
}, 10, 3);
它支持对原始站点的HTTP请求。

Solution 2

管理面板/设置/常规/站点地址(URL)-此处放置原始站点的URL。或使用wp cli:

wp option update home your_hostname.com

结束

相关推荐

Woocommerce Custom CSV export

过去几天我一直在想办法解决这个问题。是否有一个插件可以导出CSV,其中订单项都在同一行,但不在同一列单元格中?示例:项目名称\\u 01、项目数量\\u 01、项目变动\\u 01、项目金额\\u 01、项目总价\\u 01、项目名称\\u 02、项目数量\\u 02、项目变动\\u 02、项目金额\\u 02、项目总价\\u 02我购买了Woocomece Exporter,但它没有这种能力。它要么是一列中的所有产品,要么是列在自己行中的所有产品。我被告知,这两个选项都无法导入到我的组织数据库中,因为导