Исправляем 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>