私はWordpressのcodexからまっすぐ来るこの素晴らしい小さなコードを持っています
if($_FILES['user_picture']['size'] != 0):
if ( ! function_exists( 'wp_handle_upload' ) ) require_once( ABSPATH . 'wp-admin/includes/file.php' );
$uploadedfile = $_FILES['user_picture'];
$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);
}
endif;
重要なことは、うまく機能することですが、function.phpに設定されているすべての画像サイズが作成されるわけではないということです。画像をアップロードするたびにサムネイルを再生成するプラグインを実行したくない場合は、アップロード後にこれらすべてのサムネイルを作成する方法が必要です。どうやって ?
更新
他のスクリプトがどのように機能するかを調べた後、ファイルを取り戻してwp_get_image_editor
関数を使用して親指を立てる必要があります。 wp_handle_upload
またはwp_insert_attachment
を実行した後にwordpressが画像のサイズを変更しないとは信じられません。
追加中
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
後に
$attach_id = wp_insert_attachment( $attachment, $filename);
それを修正しました。