$ wp_filesystem возвращает NULL. Какие зависимости?
-
16-10-2019 - |
Вопрос
Мне нужно получить ссылку на объект $ 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.