WordPress 插入附件、生成附件信息

下面是代码,$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/