Исправляем wp-content/blogs.dir/XXX/files на files фильтром upload_dir

После какого-то обновления, возможно 3.3, в сети сайтов на основе WordPress Multisite поломались алиасы директорий загруженных файлов: вместо обычных http://example.com/files стали формироваться реальные пути – http://example.com/wp-content/blogs.dir/XXX/files (где XXX- blog_id). Причину бага выяснить пока не удалось. При этом в каждого блоге настройка fileupload_url – правильная – http://example.com/files.

Несмотря на непонятную причину, есть простое решение – фильтр 'upload_dir'. Просто добавляем в директорию mu-plugins файлик fileupload_url_fix.php такого содержания:

<?php

function fileupload_url_fix($arr) {
    $arr[‘baseurl’]= preg_replace(‘/wp-content\/blogs\.dir\/[0-9]+\/files/’, ‘files’, $arr[‘baseurl’]);
    $arr[‘url’]= preg_replace(‘/wp-content\/blogs\.dir\/[0-9]+\/files/’, ‘files’, $arr[‘url’]);
    return $arr;
}

add_filter(‘upload_dir’, ‘fileupload_url_fix’);

?>

И, для единообразия, желательно обновить URL-ы записей в таблице wp_XXX_posts, соответствующих файлам, закачанным раньше:

UPDATE wp_XXX_posts SET guid = replace(guid, 'wp-content/blogs.dir/XXX/files', 'files');

Leave a Reply

Your email address will not be published. *
You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>