看来这是可能的,也不太难。下面是我使用的代码片段。我还添加了一些检查,以防止媒体管理器中出现重复的图像,但该代码段是我唯一需要的(我只是对每个附件使用了一个元键,并在添加新附件之前检查了重复键)
我希望这对一些人有所帮助。
我正在使用文件的URL。很容易将其更改为使用区域设置文件。
Save Image to Media Manager
/**
* Saves image to the media manager
* @param int $post_id
* @param string $file
* @param string $desc
* @return int false on error
*/
function addFileToMediaManager($post_id, $file, $desc = \'\') {
// Download file to temp location
$tmp = download_url($file);
// Set variables for storage
// fix file filename for query strings
$file_array = array();
preg_match(\'/[^\\?]+\\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/\', $file, $matches);
$file_array[\'name\'] = basename($matches[0]);
$file_array[\'tmp_name\'] = $tmp;
// If error storing temporarily, unlink
if (is_wp_error($tmp)) {
@unlink($file_array[\'tmp_name\']);
$file_array[\'tmp_name\'] = \'\';
}
// do the validation and storage stuff
$attached_id = media_handle_sideload($file_array, $post_id, $desc);
// If error storing permanently, unlink
if (is_wp_error($attached_id)) {
@unlink($file_array[\'tmp_name\']);
wp_delete_post($post_id, true);
return false;
}
return $attached_id;
}
一旦您拥有附件ID和帖子ID,只需致电:
set_post_thumbnail($post_id, $attached_id);