我已经安排了包含外部图像的帖子。我希望它能自动下载图像&;如果发布状态为“发布”,则链接到媒体库。现在的问题是,当发布日程公告时,我的代码不会下载图像。如果您立即创建文章并发布,但对于以后转换为发布的明细表文章,则该方法不起作用。
有人能帮我修复代码吗?
<?php
/*
Plugin Name: Download External images
Version: 1.0
*/
add_action(\'publish_post\', \'fetch_images\');
function fetch_images( $post_ID )
{
//Check to make sure function is not executed more than once on save
if ( defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE )
return;
if ( !current_user_can(\'edit_post\', $post_ID) )
return;
remove_action(\'publish_post\', \'fetch_images\');
$post = get_post($post_ID);
$first_image = \'\';
if(preg_match_all(\'/<img.+src=[\\\'"]([^\\\'"]+)[\\\'"].*>/i\', $post->post_content, $matches)){
$first_image = $matches [1] [0];
}
if (strpos($first_image,$_SERVER[\'HTTP_HOST\'])===false)
{
//Fetch and Store the Image
$get = wp_remote_get( $first_image );
$type = wp_remote_retrieve_header( $get, \'content-type\' );
$mirror = wp_upload_bits(rawurldecode(basename( $first_image )), \'\', wp_remote_retrieve_body( $get ) );
//Attachment options
$attachment = array(
\'post_title\'=> basename( $first_image ),
\'post_mime_type\' => $type
);
// Add the image to your media library and set as featured image
$attach_id = wp_insert_attachment( $attachment, $mirror[\'file\'], $post_ID );
$attach_data = wp_generate_attachment_metadata( $attach_id, $first_image );
wp_update_attachment_metadata( $attach_id, $attach_data );
set_post_thumbnail( $post_ID, $attach_id );
$updated = str_replace($first_image, $mirror[\'url\'], $post->post_content);
//Replace the image in the post
wp_update_post(array(\'ID\' => $post_ID, \'post_content\' => $updated));
// re-hook this function
add_action(\'publish_post\', \'fetch_images\');
}
}
?>