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);
    }
} 
È stato utile?

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à.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top