web-dev-qa-db-fra.com

media_sideload_image avec des URL réécrites?

Lorsque j'essaie d'utiliser media_sideload_image avec un chemin tel que celui-ci http://placekitten.com/300/200 , ça me donne une erreur.

C'est parce qu'il ne connaît pas le type de fichier ou le nom du fichier. Meilleur moyen de télécharger l'image?

1
Jens Törnell

Vous avez raison, c'est parce que par défaut, wp_handle_sideload() requiert une extension valide dans l'URI afin de continuer à traiter le chargement latéral. Autrement dit, à moins que votre rôle ne possède une fonctionnalité appelée ' unfiltered_upload ', qui est par défaut réservée aux administrateurs.

Si cela vous semble approprié (et sûr) d’accorder cette fonctionnalité au rôle d’utilisateur qui va initier le chargement latéral, vous pouvez le faire:

if ( $role = get_role( $role_name ) ) $role->add_cap( 'unfiltered_upload' );

Exécutez-le une seule fois à partir de votre functions.php, puis et commentez-le (car il vous suffit de modifier les rôles une fois dans votre base de données).

Remarque: Je ne peux pas vraiment dire que je recommande vraiment cette approche, car elle élimine une couche de sécurité de ce qui est potentiellement la chose la plus dangereuse qu'un utilisateur puisse faire sur votre site: téléchargez un fichier. Si vous faites cela, assurez-vous absolument de désinfecter votre fichier image avant de le restituer à l'utilisateur, et ne lui donnez pas d'URL directe pour le téléchargement. Sinon, ils pourraient télécharger n'importe quelle vieille webshell et vous serez complètement et complètement piraté .

Vous avez été averti.

2
Tom Auger