файловая система $wp возвращает значение NULL. Каковы зависимости?


Мне нужно получить ссылку на объект $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-файл копируется в папку назначения, а не удаляется, как это делает мой метод архивации.

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);
    }
} 
Author: hakre, 2011-02-01

1 answers

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

Чтобы запустить фабрику "поверх" глобальной переменной (чтобы установить ее), просто вызовите функцию WP_Filesystem(), которая, угадайте, не задокументирована в кодексе . По крайней мере, документ содержит некоторую информацию , и вы можете прочитать исходный код (если это возможно для вас).

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

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

 3
Author: hakre, 2011-02-02 13:39:09