Pregunta

Necesito obtener una referencia a la $wp_filesystem objeto.En la prueba siguiente, el var_dump($wp_filesystem) devuelve NULL.¿Qué archivos adicionales son necesarios para configurar correctamente $wp_filesystem?

Yo estaba esperando que desde su llamado en file.php, la carga del archivo sería suficiente para cargar el objeto.

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

$mytest = somefunction();

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

  return;
}
?>

ACTUALIZACIÓN:He descubierto que puedo llamar WP_Filesystem() directamente a crear, así que me estoy poniendo el zip extraídos bien, ahora el problema es que el archivo zip está copiado a la carpeta de destino en vez de eliminarse como mi ZipArchive método que no.

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);
    }
} 
¿Fue útil?

Solución

$wp_filesystem es una variable global que contiene la instancia de la (auto-)configurado objeto del sistema de archivos después de que el sistema de ficheros "de fábrica" que se ha ejecutado.

Para ejecutar la fábrica "por encima" de la variable global (por así establecerlo), llame a la WP_Filesystem() función que es, supongo que lo que, indocumentados en el codex.Al menos el bloque de documentación contiene algo de información y usted puede leer el código fuente (si esa es una opción para usted).

De todos modos, yo le daría una oportunidad para agregar una llamada a una función con el código después de que requieren la file.php a partir de la /wp-admin/includes directorio.Probablemente esto ya se soluciona el problema.

Si usted está buscando un (mejor) del sistema de archivos de la abstracción de/junto a la incorporada en uno de ellos, considerar la archivo-el sistema de los objetos en SPL cual es la parte de PHP ya.

Licenciado bajo: CC-BY-SA con atribución
scroll top