web-dev-qa-db-fra.com

Convertir PHP readfile to WP_Filesystem

Dans le script ci-dessous, je dois convertir le fichier readfile en équivalent WP_filesytem. Cependant, je ne trouve pas la même chose dans le Codex. Toute aide très appréciée.

Ce script enregistre le fichier settings.ini sur le bureau/pc de l'utilisateur.

WP_Filesystem();
global $wp_filesystem;

$mySettingsFileLocation = WP_PLUGIN_DIR.'/my-settings/settings.ini';

if ( ! $wp_filesystem->put_contents( $mySettingsFileLocation, $mySettings, 0644) ) {
    return true;
}


// Define the path to file
 $file = WP_PLUGIN_DIR.'/my-settings/settings.ini';

 if(!$file)
 {
         // File doesn't exist, output error
         die('file not found');
 }
 else
 {
 // Set headers
 header("Cache-Control: public");
 header("Content-Description: File Transfer");
 header("Content-Disposition: attachment; filename=settings.ini");
 header("Content-Type: application/ini");
 header("Content-Transfer-Encoding: binary");

 // Read the file from disk
 readfile($file);
 }
2
N2Mystic

La lecture d'un fichier à envoyer à l'utilisateur est parfaitement sécurisée et ne nécessite pas nécessairement d'être convertie aux méthodes WP_Filesystem. Seule écriture est potentiellement un problème.

Cependant, si vous vouliez le faire, cela serait l'équivalent:

echo $wp_filesystem->get_contents( filename variable here );

Notez également que votre nom de fichier pour "put_contents" est incorrect. Au lieu d'utiliser WP_PLUGIN_DIR, vous devez utiliser $wp_filesystem->wp_plugins_dir() car le répertoire "distant" peut différer du répertoire "local".

$mySettingsFileLocation = $wp_filesystem->wp_plugins_dir() . '/my-settings/settings.ini';

2
Otto