wordpress - 更改 WP All Import 脚本以从 FTP 导入最新的 XML
问题描述
我想使用这个脚本来下载每 20 分钟更新一次的 XML 提要。问题是文件名有日期和时间戳。有人可以指出正确的方向如何更改它,以便它始终选择最新的文件,以便我可以更新库存。
示例文件名:
Feed2842020175940.xml
Feed2842020173907.xml
Feed2842020171807.xml
从步骤 1 的“从 URL 下载”选项调用该函数:
[custom_file_download("ftp://username:password@hostname.com/path/to/file.xml","xml")]
函数本身:
// Programmatically download and return import file via URL.
function custom_file_download($url, $type = 'xml'){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
/* Optional: Set headers...
* $headers = array();
* $headers[] = "Accept-Language: de";
* curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
*/
$result = curl_exec($ch);
if (curl_errno($ch)) {
exit('Error:' . curl_error($ch));
}
curl_close ($ch);
$uploads = wp_upload_dir();
$filename = $uploads['basedir'] . '/' . strtok(basename($url), "?") . '.' . $type;
if (file_exists($filename)){
@unlink($filename);
}
file_put_contents($filename, $result);
return str_replace($uploads['basedir'], $uploads['baseurl'], $filename);
}
解决方案
我看到两种方法可以做到这一点:
在服务器上有一个带有 XML 文件的逻辑,其中最新的文件将始终具有相同的名称(例如
latest.xml
)。您可能可以通过使用符号链接来实现这一点。从当前时间戳(即使用
time()
或以其他方式获取文件名所使用格式的时间戳)返回以推断服务器上的最新文件名。除了将时间戳减 1,然后检查名称中带有该时间戳的文件是否存在,然后再次减 1 并检查等之外,我看不出还有什么方法可以做到。这个选项不是一个好主意。:)
推荐阅读
- java - 如何在 WebLogic Server 12c 中配置错误页面
- node.js - 在嵌套查询 mongodb 中查找文档
- docker - Docker image with Sanic over alpine:latest(3.9) uses python json instead of ujson
- flutter - 如何为图标调用图标主题
- office365 - 通过 EWS 更新位置字段删除房间资源
- json - 在 manifest.json 中引用 scss 变量
- python - Python将添加句子作为图像放在matplotlib中
- php - Lumen - 带前缀和可选参数的路由
- tensorflow - 输入特征到特征图
- kubernetes - io.k8s.api.core.v1.NodeConfigSource 中的未知字段“configMap”