Під час локалізації тем або плагінів у WordPress за допомогою популярного інструменту Loco Translate розробники та адміністратори сайту часто стикаються з критичною помилкою: «File modification disallowed by the plugin settings» (Зміна файлу заборонена налаштуваннями плагіна).
Ця проблема повністю блокує можливість збереження нових перекладів або оновлення наявних мовних пакетів.
Швидка відповідь: Помилка
File modification disallowed by the plugin settingsу Loco Translate виникає через внутрішнє обмеження безпеки плагіна, яке блокує запис у директорії WordPress. Для вирішення перейдіть у Loco Translate -> Settings -> Site options, повністю очистіть текстове поле Restricted writeable directories і збережіть зміни.
Симптоми та діагностика помилки запису
Збій виникає безпосередньо в інтерфейсі редактора перекладів Loco Translate під час спроби натиснути кнопку «Зберегти» (Save) або «Синхронізувати» (Sync). Замість успішного результату плагін видає текстове попередження на червоному тлі.
Перевірка внутрішнього коду плагіна
Більшість адміністраторів одразу починають перевіряти права доступу до файлової системи (CHMOD) через FTP або панель керування сервером (наприклад, виставляючи права 755 чи 777 на папки). Проте у цьому випадку права на рівні вебсервера (Nginx/Apache) зазвичай ні до чого. Помилка генерується внутрішнім кодом самого Loco Translate:
PHP
if (!$this->roots->check($this->file->getPath())) {
throw new Loco_error_WriteException( __('File modification disallowed by the plugin settings', 'loco-translate') );
}
Code language: PHP (php)
Як видно з коду, плагін самостійно перевіряє власні внутрішні налаштування обмеження запису, перш ніж звернутися до файлової системи ядра WordPress (WordPress Core).
Чому Loco Translate блокує зміну файлів перекладу?
Головна причина — спрацьовування захисної опції Restricted writeable directories (Заборонені для запису директорії). За замовчуванням у багатьох конфігураціях або після оновлень безпеки плагін вносить кореневі папки плагінів та тем (wp-content/plugins/ та wp-content/themes/) до списку заборонених для модифікації.
Це робиться з метою безпеки CMS (CMS Security), щоб сторонні скрипти не могли перезаписати чужий код. Однак це також заважає Loco Translate створювати та редагувати компильовані файли локалізації (.po, .mo та .pot) всередині цих директорій.
Як виправити помилку Loco Translate: покрокова інструкція
Щоб відновити повноцінну роботу плагіна локалізації та дозволити генерацію мовних пакетів, виконайте наступні кроки:
1.Перехід до налаштувань:
Увійдіть до панелі адміністратора WordPress (WP-Admin). У лівому меню знайдіть розділ Loco Translate та оберіть пункт Settings (Налаштування).
2.Вибір опцій сайту:
У верхній панелі налаштувань перейдіть на вкладку Site options (Параметри сайту).
3.Очищення заблокованих шляхів:
Знайдіть секцію File system access (Доступ до файлової системи) та текстове поле навпроти параметра Restricted writeable directories. Повністю видаліть звідти всі шляхи (наприклад, дефолтний wp-content), залишивши поле абсолютно порожнім.
4.Збереження змін:
Прокрутіть сторінку донизу та натисніть синю кнопку Save Settings (Зберегти налаштування).
Після цього поверніться до вашого файлу перекладу та спробуйте зберегти зміни знову. Проблема буде усунена.
Важливий нюанс: конфлікт із константою DISALLOW_FILE_MODS
Якщо ви очистили поле в налаштуваннях плагіна, але помилка або повне блокування редагування залишилися, причиною є глобальне обмеження безпеки в ядрі сайту.
Перевірте конфігураційний файл wp-config.php у корені сайту. Якщо там встановлено константу:
define('DISALLOW_FILE_MODS', true);
Вона на рівні ядра забороняє будь-які зміни файлів системи. Щоб Loco Translate запрацював, змініть значення на false або тимчасово закоментуйте цей рядок.
Налаштування безпечного режиму на Production-серверах
Повне очищення поля Restricted writeable directories відкриває доступ Loco Translate до всієї директорії wp-content. Для сайтів на стадії розробки (Localhost) — це нормальна практика. Але якщо ваш вебресурс уже працює на «живому» сервері (Production), залишати це поле порожнім не рекомендується з міркувань безпеки.
Безпечна альтернатива через кастомну директорію:
Замість дозволу на запис у папки плагінів чи тем, налаштуйте Loco Translate так, щоб він зберігав усі ваші кастомні переклади в ізольовану системну папку: wp-content/languages/loco/.
- В інтерфейсі плагіна перейдіть до потрібного перекладу та натисніть кнопку Relocate (Перемістити).
- Оберіть тип розташування Custom (Користувацький) зі шляхом
languages/loco/.... Ця папка захищена від перезапису під час оновлень самих плагінів. - У налаштуваннях безпеки плагіна (Restricted writeable directories) ви можете знову заблокувати папки
wp-content/pluginsтаwp-content/themes, але обов’язково залиште відкритою директоріюwp-content/languages/.
FAQ: Часто задавані питання
Чи безпечно залишати поле Restricted writeable directories порожнім на робочому сайті?
Це знижує рівень захисту від потенційного впровадження шкідливого коду (malware). Для «живих» проектів краще використовувати ізольовану директорію languages/loco/, а основні папки плагінів тримати заблокованими.
Що робити, якщо після очищення поля з’явилася помилка файлової системи?
У такому разі проблема дійсно змістилася на рівень сервера. Перевірте через FTP-клієнт або менеджер файлів хостингу, щоб папки wp-content/languages/ мали права доступу 755, а файли в них — 644.
Чи зникнуть мої переклади після оновлення плагіна чи теми WordPress?
Якщо ви зберігаєте файли .po та .mo всередині папки самого плагіна (тип розташування Author), під час першого ж оновлення вони будуть повністю видалені. Завжди обирайте розташування System або Custom, щоб зберегти результати своєї роботи.
