Frage

Ich muss einen Verweis auf das Objekt $ WP_FILESSISTEM erhalten. Im folgenden Test gibt der var_dump ($ wp_filesystem) null zurück. Welche zusätzlichen Dateien sind erforderlich, um ordnungsgemäß $ wp_filesystem eingerichtet zu werden?

Ich hatte erwartet, dass das Laden dieser Datei, da es in File.php aufgerufen wird, ausreicht, um das Objekt zu laden.

<?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: Ich habe festgestellt, dass ich wp_filesystem () direkt aufrufen kann, um es zu erstellen. Daher erhalte ich das ZIP -Extrahieren gut. Jetzt ist das Problem, dass die ZIP -Datei in den Zielordner kopiert wird und nicht so gelöscht wird, wie es meine Ziparchive -Methode tut .

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);
    }
} 
War es hilfreich?

Lösung

$wp_filesystem ist eine globale Variable, die die Instanz des (automatisch) konfigurierten Dateisystems enthält, nachdem das Dateisystem "Factory" ausgeführt wurde.

Um die Fabrik "über" über die globale Variable zu führen (so festlegen), rufen Sie einfach die an WP_Filesystem() Funktion, die ist, raten Sie mal was, undokumentiert in Codex. Zumindest der Docblock enthält einige Informationen Und Sie können den SourceCode lesen (wenn dies eine Option für Sie ist).

Wie auch immer, ich würde es versuchen, Ihrem Code einen Funktionsanruf hinzuzufügen, nachdem die Datei.php von der benötigt wurde /wp-admin/includes Verzeichnis. Wahrscheinlich löst dies Ihr Problem bereits.

Wenn Sie nach einer (besseren) Datei-System-Abstraktion als/neben dem integrierten suchen, sollten Sie die betrachten Dateisystemobjekte in SPL Welches ist bereits Teil von PHP.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top