2010-07-08 3 views
3

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

i изменен upload_path в wp_1_options и wp_2_options, например, а также в моем бэкэнде в меню «Супер администраторы», но он не имеет никакого эффекта.

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

любые идеи? благодаря!

ответ

4

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

выглядит как единственное решение на данный момент. спасибо за эту информацию – choise

+0

Я просто пробовал с wordpress 3.6, и это работает как шарм. Спасибо за это, он спас мой день! – mark

+0

Не используется Общие носители в случае «Избранных изображений». Есть ли какие-нибудь проблемы? –

1

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

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

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

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

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

0

Я нашел возможное решение, которое работает для меня в 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-включает/functions.php и найти вызов функции: $uploads = apply_filters('upload_dir' ... Если она представляет, решение выше должно работать.

Надежда, это помогает ...

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

Cheers

Смежные вопросы