Intereting Posts
Как я могу получить электронную почту пользователей (и дополнительные данные) от остального API? Как определить константу перед плагином Скрыть элементы управления Shortcode по умолчанию на странице Load WPTouch – как удалить короткие коды или сделать функцию коротких кодов Добавление настраиваемого поля и запросов из столбца Как определить контекст главной страницы для WordPress mu sub-blog С W3 Total Cache, когда я публикую сообщение, он не отображается на главной странице. Только если я очищаю весь кеш Установить, если условие с wp_nav_menu Почему я не могу изменить текст по этой теме? Как я могу захватить и показать комментарии читателей моего сайта Порядок таксономии Как сделать действие в фоновом режиме? Тип персонализированного разметки и дубликаты сообщений Почему get_theme_mod возвращает пустое (или значение по умолчанию), но get_option возвращает сохраненное значение? Как удалить только последнюю липкую запись из цикла

Переименуйте папку 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 .