Intereting Posts
Как создать страницу архива для стандартных сообщений? Сортировать по сообщениям, у которых есть изображение? Custom Post Type Archive Не показывать сообщения Как добавить php-код в header.php с помощью плагина Применить пользовательский стиль к одному слову в WordPress Нужно добавить class = "lightbox" для каждого отдельного изображения Какой самый простой способ закрыть комментарии к медиа / вложениям? Поле подтверждения при отправке сообщения для проверки Рекомендуемое изображение не показано и получение ошибки «Объект класса WP_Error не может быть преобразован в int» Выпускное меню темы «Семнадцать семнадцать» Эффект лайтбокса не работает Использование «Добавить с сервера» для загрузки по идентификатору сообщения Получить содержимое страницы по ID (из плагина) Как получить пользовательское поле изображения метабокса? Как получить все сообщения, кроме частных?

Осколок BLOGUPLOADDIR

Я пытаюсь очертить BLOGUPLOADDIR, но не смог добиться успеха. Это по умолчанию:

define( 'BLOGUPLOADDIR', WP_CONTENT_DIR . "/blogs.dir/{$wpdb->blogid}/files/" ); 

Я пытаюсь установить его:

 if($wpdb->blogid<10){ $bloggroup = 'global'; }else{ $bloggroup = 'bloggroup'.floor($wpdb->blogid/2000+1); // 1999->1, 2000->2 } define( 'BLOGUPLOADDIR', WP_CONTENT_DIR . "/blogs.dir/{$bloggroup}/{$wpdb->blogid}/files/" ); 

Таким образом, каждый блог 2000 года, bloggroup изменится. Я попробовал фильтр upload_dir но мне нужно определить перед ним. Я пробовал sunrise.php, но $ wpdb-> blogid не определен там, кажется. Каков способ этого?

Скопируйте тело wp-includes/ms-settings.php в sunrise.php из строки 25 в строку 127. Внизу добавьте свой BLOGUPLOADDIR .

 // from ms-settings.php ms_subdomain_constants(); if ( !isset( $current_site ) || !isset( $current_blog ) ) { // [trimmed, but you need the whole if block] } // end of ms-settings.php copy if ( $current_blog->blog_id < 10 ) { $bloggroup = 'global'; } else { $bloggroup = 'bloggroup' . floor( $current_blog->blog_id / 2000 + 1 ); // 1999->1, 2000->2 } // from ms-default-constants.php: ms_upload_constants() define( 'UPLOADBLOGSDIR', 'wp-content/blogs.dir' ); define( 'UPLOADS', UPLOADBLOGSDIR . "/{$bloggroup}/{$current_blog->blog_id}/files/" ); define( 'BLOGUPLOADDIR', WP_CONTENT_DIR . "/blogs.dir/{$bloggroup}/{$current_blog->blog_id}/files/" ); 

ms-settings.php будет загружать sunrise.php . Когда выполнение вернется к ms-settings.php , он увидит, что $current_site и $current_blog установлены, и он пропустит эту огромную if-инструкцию. Не забудьте обновить sunrise.php при обновлении WordPress.

Экстремальное взломанное решение, которое не требует copypasta, будет включать одно из переопределений wp_start_object_cache() (единственная возможность подключения между обнаружением $current_blog и вызовом ms_upload_constants() ), но давайте не будем туда идти.

Определите его в wp-config.php . Проблема в том, что у вас не будет доступа к $ wpdb-> blogid, но попробуйте создать специальную внутреннюю кодировку для каждого блога (по субдомену или домену / первому фрагменту пути) . В худшем случае вы можете быстро подключиться к mysql и сами получить идентификатор блога. Как только вы найдете его в БД, сохраните его в XML или что-то в этом роде.

Плагины запускаются так, как только константа определяется так, если только вы не готовы сделать крошечный взлом в ядре:) … ваш единственный шанс – это использование wp-config.php плюс некоторые ** custom blog_id ** s вам придется вручную (по коду) генерировать и управлять.

Это выполнимо, просто требуется немного дополнительной работы, специально разработанной для вашей среды …