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);
}
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';