Wordpress - 以编程方式上传图像,宽度和高度均为0

时间:2015-03-07 12:21:17

标签: php wordpress

我制作了一个功能,允许用户将图像上传到我的wordpress网站。上传工作正常,但是当我打开包含此上传图片的帖子时,图片不会显示。当我在Firebug中打开它时,我注意到图像宽度和高度为0。

我如何上传图片,使其显示为我上传媒体库表格。 这是我的代码:

if(isset($_FILES["image"])) {
            if (!function_exists('wp_handle_upload')) require_once(ABSPATH . 'wp-admin/includes/file.php');
            $uploadedfile = $_FILES['image'];
            $upload_overrides = array('test_form' => false);
            $movefile = wp_handle_upload($uploadedfile, $upload_overrides);
            if ($movefile) {
                $wp_filetype = $movefile['type'];
                $filename = $movefile['file'];
                $wp_upload_dir = wp_upload_dir();
                $attachment = array(
                    'guid' => $wp_upload_dir['url'] . '/' . basename($filename),
                    'post_mime_type' => $wp_filetype,
                    'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
                    'post_content' => '',
                    'post_status' => 'inherit'
                );
                $attach_id = wp_insert_attachment($attachment, $filename);

                set_post_thumbnail($pageid, $attach_id);

            }
        }

编辑:

当我在Firebug中手动添加宽度:100%时,图像显示

1 个答案:

答案 0 :(得分:1)

我找到了解决这个问题的方法。

上传图片后,元数据未更新。所以在这个函数的最后我添加了这个:

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 );

此代码更新此图像的元数据,因此,Wordpress可以找到它的尺寸。