Question

Je dois obtenir une référence à l'objet de wp_filesystem $. Dans le test ci-dessous, le rendement var_dump ($ wp_filesystem) NULL. Quels fichiers supplémentaires sont nécessaires afin de configurer correctement $ wp_filesystem?

Je me attendais que depuis son appelé file.php, le chargement de ce fichier serait suffisant pour charger l'objet.

<?php
require('../../../wp-blog-header.php');
require('../../../wp-admin/includes/file.php');

$mytest = somefunction();

function somefunction() {
  global $wp_filesystem;
  var_dump($wp_filesystem);

  return;
}
?>

Mise à jour: J'ai trouvé que je peux appeler WP_Filesystem () directement à créer, donc je reçois le zip extrait bien, maintenant le problème est que le fichier zip est copié dans le dossier de destination plutôt que de supprimer mon méthode ZipArchive fait.

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);
    }
} 
Était-ce utile?

La solution

$wp_filesystem est une variable globale contenant l'instance de la (auto-) objet système de fichiers du système de fichiers configuré après « usine » a été exécuté.

Pour exécuter l'usine « sur » la variable globale (donc pour le définir), il suffit d'appeler la fonction WP_Filesystem() qui est, devinez quoi, en situation irrégulière codex . Au moins docblock contient des informations et vous pouvez lire le code source (si c'est une option pour vous).

Quoi qu'il en soit, je essayer d'ajouter un appel de fonction à votre code, après avoir mis l'file.php à partir du répertoire /wp-admin/includes. Probablement cela résout déjà votre problème.

Si vous êtes à la recherche d'un (meilleur) abstraction du système de fichiers que / à côté du haut-un, pensez à la objets du système de fichiers dans SPL qui fait partie de PHP déjà.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top