Изменить сценарий WP All Import для импорта новейших XML с FTP - PullRequest
1 голос
/ 28 апреля 2020

Я хотел бы использовать этот скрипт для загрузки канала XML, который обновляется каждые 20 минут. Проблема в том, что имя файла имеет дату и время. Может кто-нибудь указать мне в правильном направлении, как изменить его, чтобы он всегда выбирал самый новый файл, чтобы я мог обновить запас.

Примеры имен файлов:

Feed2842020175940. xml

Feed2842020173907. xml

Feed2842020171807. xml

Вызов функция из опции «Скачать с URL» на шаге 1:

[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);
}

1 Ответ

0 голосов
/ 02 мая 2020

Я вижу два способа сделать это:

  1. Иметь логин c на сервере с файлами XML, где самый новый файл всегда будет иметь одинаковое имя (например, latest.xml). Вы, вероятно, могли бы достичь этого, используя символические c ссылки.

  2. Работа с текущей временной меткой (т. Е. Использование time() или другой способ получить временную метку в формате, в котором указаны имена файлов). используя), чтобы вывести последнее имя файла на сервере. Я не вижу, как это можно сделать, кроме как уменьшить временную метку на 1, а затем проверить, существует ли файл с этой временной меткой в ​​имени, затем уменьшить на 1 еще раз и проверить, et c. Эта опция не хорошая идея. :)

...