¿Crear directorio en cargas - wp_mkdir_p () o WP_Filesystem?

9

No creo que haya tenido una necesidad práctica de crear carpetas / archivos en WP antes, pero para un complemento necesito una carpeta de caché (para imágenes redimensionadas) wp-content/uploads.

Lo que plantea la pregunta: ¿realmente necesito pasar por todo el proceso Filesystem API(incluso pedir credenciales FTP desordenadamente cuando sea necesario) o wp_mkdir_p()es lo suficientemente bueno para esto?

Rarst
fuente

Respuestas:

7

wp-content/uploads/debe poder escribirse 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 lo usaría WP_Filesystemsi 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 poder escribirse para el servidor (¿al menos creo que no tiene que serlo?).

Nota al margen: La página Permisos de archivo del Codex también habla sobre un wp-content/cache/directorio. ¿Sería esta una ubicación "más estándar" para los archivos de caché?

Jan Fabry
fuente
No estoy seguro, pero creo que se cachetrata más de cosas como los complementos de almacenamiento en caché de páginas, mientras que mi caso se trata más de versiones alternativas de imágenes ... La distinción entre estas carpetas parece semántica en lugar de técnica, ¿no?
Rarst
6

Intentaría algo simple, antes de perder el tiempo con un mar infinito 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(); ... ;-)
}
emperador
fuente
Por cierto: no está probado y no tengo ni idea de si guardarlo wp_mkdir_p();puede verificarse después de la ejecución o si la ejecución de la fn debería estar dentro de la instrucción if ... (nunca lo usé antes y ni siquiera sabía sobre la función en sí hasta ahora).
Kaiser
La funcionalidad relacionada es una especie de back-end-ish ... Me gustaría minimizar la interactividad. Aunque vale la pena considerar el mensaje en la configuración del complemento.
Rarst
No pensaría demasiado en eso. Si los usuarios no pueden hacerlo con los valores predeterminados, intente decirles qué hacer. Como dije: las posibilidades son infinitas y, en mi opinión, es mejor que solo diga cuál debería ser el resultado para continuar y tratar de solucionar este problema a través del código o el soporte.
Kaiser
4

Solo un aviso para que su complemento cree archivos / carpetas: mi complemento también lo hizo, y me encontré con una serie de problemas con los permisos de archivos para diferentes usuarios. Algunas son ventanas, otras son unix, algunas están alojadas y otras son de cosecha propia. Fue mi correo electrónico de soporte número 1 una vez que compartí el complemento.

He refactorizado 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.

usuario6479
fuente
Sí, entiendo eso, por eso me molesto en hacer una pregunta. Mi visión general actual del problema es que si uploadsestá bloqueado lo suficiente como para que WP falle, entonces no tiene sentido que el complemento intente hacer más. Y si es lo suficientemente bueno para WP, entonces es lo suficientemente bueno para el complemento. Afortunadamente, simplemente necesito un directorio de caché en cualquier lugar y no algo más complejo y propenso a errores.
Rarst