$ 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()
機能、何を推測してください、 Codexで文書化されていない. 。少なくとも docblockにはいくつかの情報が含まれています また、sourcodeを読むことができます(それがあなたのオプションの場合)。
とにかく、file.phpを必要とした後、あなたのコードに関数呼び出しを追加してみてください。 /wp-admin/includes
ディレクトリ。おそらくこれはすでにあなたの問題を解決しています。
組み込みのファイルシステムの抽象化(より良い)ファイルシステムの抽象化を探している場合は、組み込みのファイルシステムの抽象化を検討してください。 SPLのファイルシステムオブジェクト これはすでにPHPの一部です。