Как задать путь с файловой системой WP и базой ftp/chroot


В своей теме я буду использовать WP_Filesystem для записи файла, например:

$file = get_template_directory().'/library/assets/css/wpless2css.css';

, который выводит что-то вроде /home/user/domain/http_docs/wp-contents/theme/mytheme/library/assets/css/wpless2css.css

Это будет работать, если только пользователь ftp не будет привязан к /home/user/domain/ (на некоторых серверах?).

В случае chroot файловая система WP_Filesystem не может найти $file.

Решение, по-видимому, определяет FTP_PATH в wp-config.php в /home/user/domain/ и используйте:

if(FTP_BASE) $file =  str_replace(FTP_BASE,'',get_template_directory()).'/library/assets/css/wpless2css.css';

Я ищу более надежное решение и поддержку для различных возможных системы разрешений.

Author: Bass Jobsen, 2013-12-29

1 answers

После изменения FTP_BASE в моем wp-config я обнаружил, что функция обновления WP нарушена. Затем я понимаю, что функция обновления работает точно так же и не нуждается в каких-либо дополнительных настройках. В wp-admin/includes/update-core.php я нашел использование $wp_filesystem->wp_content_dir(). Это тоже решает мою проблему.

На http://xref.wordpress.org/branches/3.8/WordPress/Filesystem/WP_Filesystem_Base.html вы найдете список возможных полезных функций:

string wp_content_dir () 
string wp_lang_dir () 
string wp_plugins_dir () 
string wp_themes_dir ([string $theme = false])

На самом деле @otto дал мой ответ ранее ( Используя wp_filesystem в Плагины), здесь он написал:

При использовании $wp_filesystem есть удобный вызов функции для получения пути к каталогу содержимого: $wp_filesystem->wp_content_dir();. Вам необходимо использовать эту функцию, потому что путь к "удаленному" каталогу может отличаться от пути к "локальному" каталогу.

 1
Author: Bass Jobsen, 2017-04-13 12:37:38