web-dev-qa-db-ja.com

フロントエンドに画像をアップロードしてもサムネイルサイズが生成されない

以下のコードを使って、投稿のサムネイル画像をフロントエンドからアップロードします。ただし、元のサイズをアップロードするだけで、さまざまなサムネイルサイズをアップロードすることはできません。 _wp_attached_file_thumbnail_idをデータベースに入力しても問題ありませんが、他のサイズのメタデータはありません。画像は正しいアップロードフォルダに追加されますが、元のサイズのみが追加の標準サイズには追加されません。

前もって感謝します。

$uploaddir = wp_upload_dir();
                  $file = $_FILES['featured' ];
                  $uploadfile = $uploaddir['path'] . '/' . basename( $file['name'] );
                  move_uploaded_file( $file['tmp_name'] , $uploadfile );
                  $filename = basename( $uploadfile );
                  $wp_filetype = wp_check_filetype(basename($filename), null );
                  $attachment = array(
                    'post_mime_type' => $wp_filetype['type'],
                    'post_title' => preg_replace('/\.[^.]+$/', '', $filename),
                    'post_content' => '',
                    'post_status' => 'inherit',
                    'menu_order' => $_i + 1000
                    );
                  $attach_id = wp_insert_attachment( $attachment, $uploadfile );
                  $attach_data = wp_generate_attachment_metadata( $attach_id, $file );
                  wp_update_attachment_metadata( $attach_id, $attach_data );


                  $post = array(
                      'ID'             => esc_sql($current_post)
                  );
                  wp_update_post($post);

                  update_post_meta($current_post,'_thumbnail_id',$attach_id);
                  set_post_thumbnail( $current_post, $attach_id );
1
The Sumo

wp_generate_attachment_metadataは、画像添付ファイルのメタデータを生成します。また、Settings_Media_Screenで定義されているサイズに基づいて、画像添付ファイルのサムネイルおよびその他の中間サイズを作成します。

wp_generate_attachment_metadata()はwp-admin/includes/image.phpにあります。

/ * wp_generate_attachment_metadataの前に単にimage.phpが必要です* /

require_once(ABSPATH。 'wp-admin/includes/image.php');

$ attach_data = wp_generate_attachment_metadata($ attach_id、$ file);

それが役立つことを願っています!

1
Aishan

これを行う唯一の方法は、 media_handle_upload を使用することです。

0
The Sumo