Вопрос

Мне нужно получить ссылку на объект $ wp_filesystem. В приведенном ниже тесте VAR_DUMP ($ WP_FILESYSTEM) возвращает NULL. Какие дополнительные файлы требуются для правильной настройки $ wp_filesystem?

Я ожидал, что с тех пор, как он вызван в file.php, загрузка этого файла будет достаточной для загрузки объекта.

<?php
require('../../../wp-blog-header.php');
require('../../../wp-admin/includes/file.php');

$mytest = somefunction();

function somefunction() {
  global $wp_filesystem;
  var_dump($wp_filesystem);

  return;
}
?>

Обновление: я обнаружил, что могу позвонить в WP_FILESYSTEM () непосредственно для его создания, поэтому я получаю нормальное извлечение ZIP, теперь проблема в том, что файл ZIP скопирован в папку назначения, а не удаляется, как мой метод Ziparchive. Анкет

require('../../../wp-blog-header.php');
require('../../../wp-admin/includes/file.php');

function openZip($file_to_open) { 
    global $target;  
    global $wp_filesystem;
    if(class_exists('ZipArchive'))
    {
        $zip = new ZipArchive();  
        $x = $zip->open($file_to_open);  
        if($x === true) 
        {  
            $zip->extractTo($target);  
            $zip->close();                
            unlink($file_to_open);  
        } else {  
            die("There was a problem. Please try again!");  
        }
    }
    else
    {
    WP_Filesystem();
    $my_dirs = ''; //What should this be? I'm already passing he $target directory
    _unzip_file_pclzip($file_to_open, $target, $my_dirs);
    }
} 
Это было полезно?

Решение

$wp_filesystem является глобальной переменной, содержащей экземпляр (автоматического) настроенного объекта файловой системы после запуска файловой «фабрики».

Чтобы запустить фабрику «над» глобальной переменной (чтобы установить ее), просто назовите WP_Filesystem() функция, которая есть, угадайте, что, Недокументирован в кодексе. Анкет По крайней мере Docblock содержит некоторую информацию И вы можете прочитать SourceCode (если это вариант для вас).

В любом случае, я бы попробовал добавить функциональный вызов в ваш код после требования file.php из /wp-admin/includes каталог. Наверное, это уже решает вашу проблему.

Если вы ищете (лучшую) абстракцию файловой системы, чем/рядом со встроенной, рассмотрите объекты файловой системы в SPL который уже является частью PHP.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top