Intereting Posts
Проблема с мета-поле в ссылках Как поместить enctype = "multipart / form-data" в категории? add_editor_style не загружается в frontend. Любое решение? Удалить «? Add-to-cart = product-id» из URL-адреса «Добавить в корзину», когда на странице «Корзина» Обновление страницы через редактор темы вызвало разрыв wp admin Как создать свою собственную боковую панель в детской теме Twenty Eleven? ни один из моих css не работает в моей дочерней теме Как я могу сравнивать даты публикации и обновления для одного сообщения? Панель инструментов, скрытая на виртуальной странице Пользовательское поле WordPress Цвета Отдельный пост-дисплей списка всех сообщений + конкретная запись Постоянно хранить дополнительные пользовательские значения Отображать URL-адрес в пользовательском поле Отображение форматированного списка терминов таксономии с последним раздельным Список только записей определенной категории на странице категории

Переименуйте папку UPLOADS с помощью специального WP_CONTENT_DIR

Для целей контроля версий наш клиент имеет приложение WordPress со структурой каталогов, как это:

. |_____app | |_____themes | |_____plugins | |_____uploads |_____index.php |_____WordPress |_____wp-config.php 

В wp-config.php :

 define('WP_CONTENT_DIR', __DIR__ . '/app'); define('WP_CONTENT_URL', WP_HOME . '/app'); 

Теперь она хочет переименовать все папки WordPress по умолчанию в каталоге приложений.

С plugins и themes мы можем сделать это легко, используя WP_PLUGIN_DIR и register_theme_directory () . Но, как-то, это не просто переименовать папку uploads .

Я пробовал много изменений с константой UPLOADS , но это не может помочь, потому что пользовательская папка uploads всегда создается внутри каталога WordPress .

Есть ли способы решить эту проблему?

Solutions Collecting From Web of "Переименуйте папку UPLOADS с помощью специального WP_CONTENT_DIR"

После копания я закончил с использованием фильтра upload_dir .

Вот что я попытался в functions.php чтобы изменить uploads на media . Надеюсь, это тоже поможет кому-то 🙂

  add_filter('upload_dir', function($uploads) { $custom = []; foreach ($uploads as $key => $value) { if ( false !== strpos($value, '/app/uploads') ) { $custom[$key] = str_replace('/app/uploads', '/app/media', $value); } else { $custom[$key] = $value; } } return $custom; }); 

Огромное спасибо @gmazzap за рекомендации и предложение об upload_dir фильтра upload_dir !

Если вы посмотрите на источник _wp_upload_dir , вы увидите:

 if (defined('UPLOADS') && ! (is_multisite() && get_site_option('ms_files_rewriting'))) { $dir = ABSPATH.UPLOADS; $url = trailingslashit($siteurl).UPLOADS; } 

Таким образом, UPLOADS можно использовать только для определения foder относительно ABSPATH , который, я думаю, является /WordPress папкой /WordPress в вашей настройке.

В той же функции вы можете видеть, что если get_option('upload_path') и get_option('upload_url_path') пустые, путь и URL-адрес загружаемой папки установлены соответственно в WP_CONTENT_DIR.'/uploads' WP_CONTENT_URL.'/uploads' WP_CONTENT_DIR.'/uploads' и WP_CONTENT_URL.'/uploads' который должен быть отлично для вас, если вы определяете WP_CONTENT_DIR и WP_CONTENT_URL как в OP.

Если вы вообще не определяете UPLOADS и папка uploads все еще не разрешена /app/uploads , очень вероятно, что ваша база данных содержит некоторое значение для параметров 'upload_path' и 'upload_url_path' .

У вас есть 2 возможности:

  • удалить эти параметры
  • используйте "pre_option_{$option}" чтобы заставить get_option() возвращать что-то пустое для этих параметров (но не false или фильтры будут игнорироваться).

Для второй возможности код может быть примерно таким:

 add_filter('pre_option_upload_path', '__return_empty_string'); add_filter('pre_option_upload_url_path', '__return_empty_string'); 

При использовании вышеуказанного кода и без UPLOADS константы UPLOADS , если вы определяете WP_CONTENT_DIR и WP_CONTENT_URL , папка uploads должна быть правильно решена.

Если этого не произойдет, должно быть что-то, что действует на какой-либо фильтр, например upload_dir .