以下のコードを使って、投稿のサムネイル画像をフロントエンドからアップロードします。ただし、元のサイズをアップロードするだけで、さまざまなサムネイルサイズをアップロードすることはできません。 _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 );
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);
それが役立つことを願っています!
これを行う唯一の方法は、 media_handle_upload を使用することです。