Вордпресс Мультисайт 3 с таким же Medialibrary
Я создал Мультисайт Worpress 3 с 5 суб-блогами. Можно ли разделить одну и ту же медиа-библиотеку в этом блоге?
Я изменил upload_path
в wp_1_options
и wp_2_options
, например, а также в моем бэкэнде в меню "Super Admins", но это не имеет никакого эффекта.
Файлы загружаются в wp_contents/blogs.dir/1-2-3/files
, и параметры не имеют никакого эффекта.
Есть идеи? Спасибо!
3 ответа:
Один из способов обойти это зацепиться за события загрузки всех файлов Media admin и переключиться на основной блог с помощью
switch_to_blog(1)
.Это означает, что в любом администраторе блога медиатека всегда будет работать так, как если бы она была в основном блоге.
Обратите внимание, что пара предостережений включает;
Библиотека мультимедиа для всех блогов хранится в главной таблице базы данных блогов.
- Вы можете столкнуться с проблемами при вставке медиа в сообщения вне главного администратора блога
- Ты будут возникать проблемы с вставкой галерей в сообщения вне главного администратора блога
- разрешения пользователя могут быть ложными положительными или отрицательными
Мой лучший совет-использовать приведенный ниже пример кода и иметь хорошую игру с администраторами блога, вошедшими в систему как разные пользователи, с разными ролями, и посмотреть, что произойдет.
function use_main_blog_library() { switch_to_blog(1); } add_action('load-media-new.php', 'use_main_blog_library'); add_action('load-media-upload.php', 'use_main_blog_library'); add_action('load-media.php', 'use_main_blog_library'); add_action('load-upload.php', 'use_main_blog_library');
В моем поиске по этой теме несколько сообщений приводят к этому, поэтому я решил поделиться идеей, которая может помочь кому-то, кто хочет разработать подходящий плагин для решения этой проблемы...
Я провел несколько часов, играя с администраторскими крючками и фильтрами, и это можно было бы сделать с их помощью, хотя я недостаточно подкован, чтобы знать, как полностью интегрировать его со всеми функциями медиа-библиотеки.
- Используйте get_site_option() и
update_site_option()
для хранения глобальных параметров плагина.- Добавьте опцию через крючки, чтобы выбрать, должна ли загрузка мультимедиа быть общей по всей сети, и пусть плагин отслеживает, какие медиа-файлы и где они расположены.
- Опять же, используя крючки, покажите общие элементы в медиатеке каждого блога и, возможно, добавить индикатор, показывающий, что файл является общим сетевым ресурсом.
Плагин Shiba Media Library может служить ценным справочником, так как они использовали несколько пользовательских функций для носителей Библиотека с помощью крючков и фильтров.
Я действительно хотел бы иметь свободное время, чтобы работать над этим прямо сейчас, потому что я бы сделал свой лучший выстрел в этом. Надеюсь, это поможет кому-то еще.
Я нашел возможное решение, которое работает для меня в WP3. 7. 1 (я не тестировал его в предыдущих версиях)
Создайте фильтр, который переопределяет каталоги загрузки по умолчанию:
add_filter('upload_dir', 'ms_global_upload_dir'); function ms_global_upload_dir($uploads) { $ms_dir = '/sites/' . get_current_blog_id(); $uploads['path'] = str_replace($ms_dir, "", $uploads['path']); $uploads['url'] = str_replace($ms_dir, "", $uploads['url']); $uploads['basedir'] = str_replace($ms_dir, "", $uploads['basedir']); $uploads['baseurl'] = str_replace($ms_dir, "", $uploads['baseurl']); return $uploads; }
Важно: настройки 'Upload Url Path' должны быть пустыми в настройках сайта или, если вам нужно настроить его, проверьте результаты, сбросив массив
$uploads
для просмотра возможных конфликтов.Чтобы проверить, поддерживает ли ваша версия WP этот метод, найдите функцию
wp_upload_dir()
в файле wp-включает/функции.php и вызов функции find:$uploads = apply_filters( 'upload_dir' ...
Если он присутствует, то решение выше должно работать.Надеюсь, это поможет ...
Кроме того, я потратил почти два дня, чтобы сделать решение для репликации/удаления загруженных носителей в каждом из блогов с помощью крючков действий "add_attachment" и "delete_attachment", генерируя необходимые записи post и postmeta в соответствующих таблицах базы данных. При этом вы можете добавлять/удалять медиа в любой из блогов, который будет виден in / removed from all blogs media library. Если вам интересно,я могу поделиться...
Ура