目前,我们正在重建一个旧的WordPress网站。我们需要从那里导入大量图像。因此,我将所有目录复制到新站点,因此路径是相同的。
现在我们要将它们添加到媒体库中。所以我写了一个小脚本来循环遍历文件夹并执行操作。
它可以工作,但仅适用于前10次迭代,适用于第11幅图像wp_update_attachment_metadata()
不再工作(在媒体库中,img缩略图没有显示),然后foreach中断。(我也试着从另一个文件夹开始,它是一样的)。
看起来像是require_once( ABSPATH . \'wp-admin/includes/image.php\' );
正在打破循环。没有这个,没有wp_update_attachment_metadata()
我可以回显所有图像URL。
我的意思是:我为一个页面创建了一个模板来完成这项工作。页面也显示不完整(导航、WP工具栏和header.jpg不完整),而且在媒体库中,导入时仅显示10幅图像。所以我猜剧本要被打破了。
代码如下:
$fullPath = $_SERVER[\'DOCUMENT_ROOT\']. \'/wp-content/uploads/\';
$scan = scandir($fullPath);
foreach($scan as $sc) {
if(ctype_digit($sc)) {
$scArr = scandir($fullPath . $sc);
foreach($scArr as $s) {
if(ctype_digit($s)) {
$sArr = scandir($fullPath . $sc . \'/\' . $s);
foreach($sArr as $img) {
$pattern="/[0-9]x[0-9]/";
if(!preg_match($pattern, $img)) {
$path = $fullPath . $sc . \'/\' . $s . \'/\' . $img;
$uploadPath = \'/home/preisvo0/public_html/neu/wp-content/uploads/\'. $sc . \'/\' . $s . \'/\' . $img;
echo $uploadPath . \'<br/>\';
$name = preg_replace( \'/\\.[^.]+$/\', \'\', $img );
$filetype = wp_check_filetype($img, null);
if($img != \'..\' && $img != \'.\') {
$attachment = array(
\'guid\' => $uploadPath,
\'post_mime_type\' => $filetype[\'type\'],
\'post_title\' => $name,
\'post_content\' => \'\',
\'post_status\' => \'inherit\'
);
$upload_id = wp_insert_attachment( $attachment, $uploadPath );
echo "Uploaded »" . $img . "« »" . $upload_id . "« <br />";
require_once( ABSPATH . \'wp-admin/includes/image.php\' );
wp_update_attachment_metadata( $upload_id, wp_generate_attachment_metadata( $upload_id, $uploadPath ) );
}
}
}
}
}
}
}