WordPress 3 Мультисайт с той же медиабиблиотекой - PullRequest
3 голосов
/ 08 июля 2010

я создал Worpress 3 Multisite с 5 суб-блогами. Можно ли использовать одну и ту же Медиатеку в этих блогах?

я изменил upload_path в wp_1_options и wp_2_options, например, а также в моем бэкэнде в меню «Super Admins», но это не имеет никакого эффекта.

Файлы загружаются в wp_contents/blogs.dir/1-2-3/files, и параметры не действуют.

есть идеи? спасибо!

Ответы [ 3 ]

4 голосов
/ 08 июля 2010

Один из способов - подключить события загрузки всех файлов мультимедиа-администратора и переключиться на основной блог, используя 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');
1 голос
/ 13 сентября 2011

В моем поиске по этой теме несколько сообщений приводят к этой теме, поэтому я решил поделиться идеей, которая может помочь кому-то, желающему разработать подходящий плагин для решения этой проблемы ...

  • Используйте get_site_option () и update_site_option() для хранения глобальных опций плагина.
  • Добавьте опцию с помощью хуков, чтобы выбрать, будет ли загрузка мультимедиа распространяться по всей сети, и позволить плагину отслеживать, какие медиафайлы и где они находятся.
  • Опять же, с помощью хуков, отображайте общие элементы в медиатеке каждого блога и, возможно, добавьте индикатор, показывающий, что файл является сетевым ресурсом.

Я потратил несколько часов, играя с административными хуками и фильтрами, и этого можно добиться с помощью них, хотя я недостаточно разбираюсь в том, чтобы знать, как полностью интегрировать его со всеми функциями медиатек.

Плагин библиотеки мультимедиа Shiba может служить ценным справочным материалом, поскольку он использует несколько пользовательских функций для библиотеки мультимедиа с помощью хуков и фильтров.

Мне бы очень хотелось, чтобы у меня было свободное время, чтобы поработать над этим прямо сейчас, потому что я бы сделал все возможное для этого. Я надеюсь, что это помогает кому-то еще.

0 голосов
/ 18 ноября 2013

Я нашел возможное решение, которое работает для меня в 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;
}

Важное замечание: настройки «Путь к URL для загрузки» должны быть пустыми в настройках сайта или, если вам необходимо настроить их, проверьте результаты, сбросив массив $uploads для просмотра возможных конфликтов.

Чтобы проверить, поддерживает ли ваша версия WP этот метод, найдите функцию wp_upload_dir() в файле wp-includes / functions.php и найдите вызов функции: $uploads = apply_filters( 'upload_dir' ... Если это так, решение, приведенное выше, должно работать.

Надеюсь, это поможет ...

Кроме того, я потратил почти два дня, чтобы найти решение для репликации / удаления загруженных носителей в каждом из блогов с помощью хуков действий «add_attachment» и «delete_attachment» путем создания необходимых записей post и postmeta в соответствующих таблицах базы данных. , При этом вы можете добавлять / удалять мультимедийные файлы в любом из блогов, которые будут видны в / удалены из всех библиотек мультимедиа блогов. Если вам интересно, могу поделиться ...

Приветствия

...