I have creted a script which will fetch content from one of my site and automatically create new post in my wordpress blog.
When I am running that script from browser, its working really cool! post is being created, intended image is being set as featured image but when I am trying to run it from background or as a cron job, post is being created, published but the featured image is not being set.
Please suggest me the proper solution. Here is my code to set the featured image.
$wp_filetype = wp_check_filetype(basename($filename), null );
$wp_upload_dir = wp_upload_dir();
$attachment = array(
'guid' => $wp_upload_dir['url'] . '/' . basename( $filename ),
'post_mime_type' => $wp_filetype['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($post_title)),
'post_content' => 'just xyz',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $filename, $parent_post_id);
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
if( $featured )
{
set_post_thumbnail($parent_post_id, $attach_id);
}
Additional info if it can help you in finding the problem. wp_get_attachment_image was not even working exactly after attaching image and executing above code. It was returning empty string.