我使用wordpress导入工具导入了一个文件,并下载了包含的附件。在一次成功的输入之后,我发现我的媒体库只包含3个文件。经过几个小时的研究,没有解决方案,我检查了数据库,发现只有3行类型‘附件’,这是显示在媒体库中的文件。但是,wp-content/uploads中的所有文件都是完整的。
我是否可以通过扫描wp-content/uploads目录中的每个文件并将必要的文件添加回数据库来恢复附件?
发布于 2022-11-26 02:27:22
是的,你能做到的。首先设置一个循环,循环遍历上传目录中的所有图像。然后用创建类型附件的新帖子所需的数据构造一个数组:
$dir = new DirectoryIterator(wp_upload_dir()[0]);
foreach ($dir as $maybeFile) {
if ($maybeFile->isFile()) {
$filename = $maybeFile->getPathname();
$wp_filetype = wp_check_filetype( $filename, null );
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name( $filename ),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $filename );
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
}
}我使用了DirectoryIterator php类:https://www.php.net/manual/en/class.directoryiterator.php
关于如何将位于任意url上的图像上载到上载目录:以编程方式向媒体库添加图像的另一个堆栈溢出回答。
https://wordpress.stackexchange.com/questions/411576
复制相似问题