J'écris un thème / plugin personnalisé dans lequel je dois télécharger des images par programme à partir de certaines pages Web dans le dossier de téléchargement, puis les insérer dans le cadre de la publication.
Donc, j'ai pu trouver l'URL de l'image par programme, puis je dois les enregistrer dans le dossier de téléchargement sous wp-content, mais ce dossier a une structure de dossier WordPress spécifique à l'intérieur pour les images enregistrées.
Maintenant, ma question est, existe-t-il une API ou une fonction ou une méthode WordPress qui me permettra de télécharger des images sur le Web et de les enregistrer dans le dossier de téléchargement? Et si oui, qu'est-ce que c'est.
Sinon, que dois-je faire pour enregistrer ces images?
Jusqu'à présent, je fais ça
$filetype = wp_check_filetype(basename($image_file_name), null );
$upload_dir = wp_upload_dir();
$attachment = array(
'guid' => $upload_dir['url'] . '/' . basename( $image_file_name ),
'post_mime_type' => $filetype['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($image_file_name)),
'post_content' => '',
'post_status' => 'inherit'
);
$attachment_id = wp_insert_attachment( $attachment, $image_file_name, $post_id );
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $image_file_name );
wp_update_attachment_metadata( $attachment_id, $attachment_data );
set_post_thumbnail( $post_id, $attachment_id );
Mais le code ci-dessus me donne l'erreur suivante
imagejpeg(http://wscdn.bbc.co.uk/worldservice/assets/images/2013/07/21/130721173402_egypts_new_foreign_minister_fahmy_304x171_reuters-150x150.jpg): failed to open stream: HTTP wrapper does not support writeable connections in C:\dev\wordpress\pterodactylus\wp-includes\class-wp-image-editor.php on line 334
Et après une enquête plus approfondie, il semble que l'erreur soit causée par
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $image_file_name );
Et après une enquête encore plus approfondie, la documentation pour les wp_insert_attachment()
États qui The file MUST be on the uploads directory
concerne la$image_file_name
Alors, comment puis-je télécharger une image et l'enregistrer correctement dans mon message?
Merci beaucoup.