$ Torna wp_filesystem NULL. Quali sono le dipendenze?
-
16-10-2019 - |
Domanda
Ho bisogno di ottenere un riferimento all'oggetto $ wp_filesystem. Nel test di seguito, il var_dump ($ wp_filesystem) restituisce NULL. Quali file sono necessari ulteriori, al fine di impostare correttamente $ wp_filesystem?
mi aspettavo che da quando la sua chiamata in file.php, carico quel file sarebbe sufficiente a caricare l'oggetto.
<?php
require('../../../wp-blog-header.php');
require('../../../wp-admin/includes/file.php');
$mytest = somefunction();
function somefunction() {
global $wp_filesystem;
var_dump($wp_filesystem);
return;
}
?>
UPDATE: ho trovato che posso chiamare WP_Filesystem () direttamente a crearla, quindi sto ricevendo lo zip estratto bene, ora il problema è che il file zip viene copiato nella cartella di destinazione, piuttosto che cancellato come il mio metodo ZipArchive fa.
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);
}
}
Soluzione
$wp_filesystem
è una variabile globale contenente l'istanza del (auto-) oggetto del filesystem configurato dopo il filesystem "fabbrica" ??è stato eseguito.
Per eseguire la fabbrica "over" la variabile globale (si fa per impostare), basta chiamare la funzione WP_Filesystem()
che è, indovinate un po ', senza documenti in codice . Almeno la docblock contiene alcune informazioni e si può leggere il codice sorgente (se questo è un'opzione per voi).
In ogni caso, vorrei fare un tentativo per aggiungere una chiamata di funzione per il codice dopo che richiede il file.php dalla directory /wp-admin/includes
. Probabilmente questo risolve già il tuo problema.
Se siete alla ricerca di una (migliore) astrazione file system di / accanto al built-in uno, si consideri il oggetti del file-system in SPL che fa parte del PHP già.