• 下面是代码,$attachment里可以添加已存在的媒体的id字段,变为更改已存在的媒体的信息,添加id后 guid字段无效

    $filename = '/wp-content/uploads/2013/03/filname.jpg';//需要注册的附件路径,需要在/wp-content/uploads下
    
    $filetype = wp_check_filetype( basename( $filename ), null );//获取文件类型 比如 image/webp
    $wp_upload_dir = wp_upload_dir();
    
    $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',
    	'post_date'	=> 'Y-m-d H:i:s', //时间,非必填,格式是Y-m-d H:i:s
    	'post_date_gmt'	=> 'Y-m-d H:i:s', //时间,非必填,格式是Y-m-d H:i:s
    
    );
    
    $attach_id = wp_insert_attachment( $attachment, $filename); // 写入表wp_posts里,返回id
    
    require_once( ABSPATH . 'wp-admin/includes/image.php' );// 剪切图片需要
    $attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
    // wp_generate_attachment_metadata 函数生成生成metadata,和裁切小尺寸的缩略图
    
    wp_update_attachment_metadata( $attach_id, $attach_data );
    // wp_update_attachment_metadata 函数写入到数据库wp_postmeta里

    取消WordPress 预设图片尺寸:

    add_filter('intermediate_image_sizes_advanced', 'prefix_remove_default_images');
    
    function prefix_remove_default_images($sizes)
    {
        unset($sizes['2560×2560']);
        unset($sizes['2048x2048']);
        unset($sizes['1536x1536']);
        unset($sizes['medium_large']);
        unset($sizes['post-thumbnail']);
        unset($sizes['twentytwenty-fullscreen']);
    
        return $sizes;
    }

    有一个插件可以批量注册附件 https://wordpress.org/plugins/bulk-media-register/