Je ne parviens pas à ajouter une image sélectionnée à un message existant via PHP. L'image réside dans le dossier wp-content/upload. Le script que je fais n'est pas un plugin, un thème ou quelque chose comme ça. C'est juste un script d'automatisation qui s'exécute chaque fois qu'il est appelé.
Quelle est la meilleure approche pour ce cas?
L'astuce est media_sideload_image()
et set_post_thumbnail()
. media_sideload_image()
suppose que vous pouvez récupérer l'URL de l'image, qu'elle existe dans /wp-content/
ou ailleurs (même sur un autre site). Tant que vous pouvez référencer par programme l'URL de l'image, cela devrait fonctionner.
$image = 'image.jpg';
$media = media_sideload_image($image, $post->ID);
if(!empty($media) && !is_wp_error($media)){
$args = array(
'post_type' => 'attachment',
'posts_per_page' => 1,
'post_status' => 'any',
'post_parent' => $post->ID
);
// reference new image to set as featured
$attachments = get_posts($args);
if($attachments){
foreach($attachments as $attachment){
set_post_thumbnail($post->ID, $attachment->ID);
// only want one image
break;
}
}
}