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