plugins - wp_generate_attachment_metadata is creating an empty array

I'm making a custom wp plugin for image optimization. I'm at the point that you choose the image, the script s

I'm making a custom wp plugin for image optimization. I'm at the point that you choose the image, the script starts to optimize and put the new image in the upload folder. The problem is that i can't register the new image correctly in the WP Media, i've already seen a lot of posts about that but still i didnt solved.

The main problem is that i can see the file in my wp media, but without thumbnail or other informations like filesize, image width and height.

At the first time my script was uploading his files in /wp-content/uploads/plugin-folder/ , but then i noticed that the problem was that wp_generate_attachment_metadata is making an empty array. So i moved every new image in the correct uploads folder like /wp-content/uploads/2019/09/etc.

The problem was not solved and the function wp_generate_attachment_metadata is still making and empty array.

I noticed that if i create a custom array for the attach data, with only width and height, wordpress generate the media thumbnail, but i still don't get the filesize that is the most important thing for a script that optimize images.

Here is the code:

        require_once( ABSPATH . 'wp-admin/includes/image.php' );
    require_once( ABSPATH . 'wp-admin/includes/file.php' );
    require_once( ABSPATH . 'wp-admin/includes/media.php' );
    $filename = $new_file_path;
    $filetype = wp_check_filetype( basename( $filename ), null );
    // Prepare an array of post data for the attachment.
    $attachment = array(
        'guid'           => $wp_upload_dir['url'] . '/' . basename( $filename ), 
        'post_mime_type' => $filetype['type'],
        'post_title'     => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
        'post_content'   => '',
        'post_status'    => 'inherit'
    );

    // Insert the attachment.
    $attach_id = wp_insert_attachment( $attachment, $filename, 0 );
    echo '<b>' . $attach_id . '</b>' . '<br>';
    // Generate the metadata for the attachment, and update the database record.
    $new_image_info = getimagesize($new_file_url);
    // $uploaded_file_info = get_attached_file($attach_id);
    $custom_attach_data = array(
        'width' => $new_image_info[0],
        'height' => $new_image_info[1],
    );
    $attach_data = wp_generate_attachment_metadata($attach_id, $filename);
    wp_update_attachment_metadata( $attach_id, $attach_data );
    wp_update_attachment_metadata( $attach_id, $custom_attach_data );
    // echo '<textarea>';
    //  var_dump($attach_data);
    // echo '</textarea>';
    set_post_thumbnail( $attach_id, $attach_id );

As you can see i use 2 times the function wp_update_attachment_metadata, and the second time is my custom array. With this i get the image thumbnail but with still some data missing. I'm sure im missing something.

Thank you in advance.

Update: My image path are now something like:

/var/www/html/demositeurl/wp-content/uploads/2019/09/20170610_205517_web_optimized.png

I also noticed that the filesize() function is not working, i get the error:

[24-Sep-2019 14:25:48 UTC] PHP Warning:  filesize(): stat failed for /var/www/html/demosite/wp-content/uploads/2019/09/20170610_205517_web_optimized.png in /var/www/html/demosite/wp-content/plugins/demo-plugin/demo-main-file.php on line 91

At first i thinked it was a permission problem, but even with everything assignet to www-data:www-data and 775, is still not working. Maybe this can be the real issue?

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745133909a4613105.html

相关推荐

  • plugins - wp_generate_attachment_metadata is creating an empty array

    I'm making a custom wp plugin for image optimization. I'm at the point that you choose the image, the script s

    2小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信