Creación de directorio en cargas - wp_mkdir_p () o wp_filesystem?
-
22-10-2019 - |
Pregunta
No creo que haya tenido una necesidad práctica de crear carpetas/archivos en WP antes, pero para un complemento necesito la carpeta de caché (para imágenes redimensionadas) en wp-content/uploads
.
Que plantea la pregunta: ¿realmente necesito pasar por todo el proceso con Filesystem API
(incluido el pedido desordenado de credenciales FTP cuando sea necesario), o wp_mkdir_p()
¿Es lo suficientemente bueno para esto?
Solución
wp-content/uploads/
Debería ser escritura para el servidor (de lo contrario, sería imposible cargar un archivo, ¿no?). Si va a crear algo en este directorio, es seguro usarlo wp_mkdir_p()
.
Solo usaría WP_Filesystem
Si existe la posibilidad de que el servidor no tenga permisos para escribir en la ubicación, como en wp-content/plugins/
, que no tiene que ser escritos para el servidor (al menos creo que no tiene que serlo?).
Nota al margen: La página de permisos de archivo del códice También habla de un wp-content/cache/
directorio. ¿Sería esta una ubicación "más estándar" para los archivos de caché?
Otros consejos
Intentaría algo simple, antes de jugar con un interminable mar de posibilidades/configuraciones de alojamiento:
$target = 'wherever';
wp_mkdir_p( $target );
if ( wp_mkdir_p( $target ) === TRUE )
{
echo "Folder $target successfully created";
}
else
{
new WP_Error; #... etc. Just tell where the user has to make a new folder with the name xy
// or if you're kool, you use _doing_it_wrong(); ... ;-)
}
Solo un aviso de hacer que su complemento cree archivos/carpetas: mi complemento también lo hizo y me encontré con una gran cantidad de problemas con los permisos de archivos para diferentes usuarios. Algunas son ventanas, otras son UNIX, otras están alojadas y algunas de casa. Fue mi correo electrónico de soporte #1 una vez que compartí el complemento.
He refactorado mi código para minimizar la necesidad de tocar los sistemas de archivos y el directorio de carga es el único que uso ahora para evitar tales problemas.