Error "Archivo especificado falló la prueba de carga" al subir imagen desde front-end
Este es mi código:
$file_return = wp_handle_upload($_FILES['my-photo'], array('test_form' => FALSE));
if(isset($file_return['error']) || isset($file_return['upload_error_handler'])) {
echo "Y entonces falló...";
print_r($file_return);
die;
}
¿Por qué no se sube al directorio de uploads y por qué muestra el error "Specified file failed upload test."?

Consulta la documentación de wp_handle_upload
Necesitas incluir el archivo file.php antes de llamar a wp_handle_upload
require_once( ABSPATH . 'wp-admin/includes/file.php' )

La función wp_handle_upload
intenta leer los datos del archivo desde la dimensión más baja del array proporcionado. Por ejemplo: $file['tmp_name']
. Por lo tanto, si la información está en una capa secundaria del array (como $file['my-photo']['image']
), no encontrará el índice esperado y generará un aviso en tu registro, como este:
PHP Notice: Undefined index: tmp_name
Y fallará la prueba de subida. Revisa tu registro de errores en busca de advertencias. También, consulta el código fuente del método para tu mensaje de error, esto podría ayudarte mucho: https://developer.wordpress.org/reference/functions/_wp_handle_upload/#source (línea #792).
