файловая система $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);
}
}
1 answers
$wp_filesystem
является глобальной переменной, содержащей экземпляр (автоматически)настроенного объекта файловой системы после запуска "фабрики" файловой системы.
Чтобы запустить фабрику "поверх" глобальной переменной (чтобы установить ее), просто вызовите функцию WP_Filesystem()
, которая, угадайте, не задокументирована в кодексе . По крайней мере, документ содержит некоторую информацию , и вы можете прочитать исходный код (если это возможно для вас).
В любом случае, я бы попробовал добавить вызов функции в ваш код после запроса file.php из каталога /wp-admin/includes
. Вероятно, это уже решает вашу проблему.
Если вы ищете (лучшую) абстракцию файловой системы, чем/рядом со встроенной, рассмотрите объекты файловой системы в SPL, которые уже являются частью PHP.