Как просматривать файлы в директориях на экране "Редактирование тем"

12 нояб. 2012 г., 00:01:42
Просмотры: 18.4K
Голосов: 4

Мне нравится организовывать папки в директории темы для скриптов и стилей, но я не могу получить доступ к этим папкам через интерфейс "Редактирование тем". Это создает проблемы при работе с клиентами, которые не предоставляют FTP-доступ. Есть ли способ просматривать эти папки и файлы в них из админки WordPress?

4
Комментарии

Зачем вам использовать редактор тем в WordPress? Вы можете легко создать пользовательскую страницу для отображения таких файлов и добавить к ней визуальный редактор (любой, который вам нравится) для программирования так, как вам удобно.

grosshat grosshat
16 нояб. 2012 г. 10:07:03

Клиенты, которые не дают вам доступ по FTP — плохие клиенты, или они предоставляют вам более удобные способы, например, доступ через shell. Скорее всего, это социальная проблема, потому что они не знают, что такое FTP, и просто перестраховываются. Требуйте доступ к тому, что вам нужно для выполнения работы. В конце концов, вы же не платите сантехнику за ремонт раковины, но запрещаете ему заходить в дом.

Tom J Nowell Tom J Nowell
18 нояб. 2012 г. 22:55:46

Возможный дубликат: как сделать таблицу стилей видимой в редакторе тем?

brasofilo brasofilo
20 нояб. 2012 г. 01:38:59

просто добавьте file_put_contents(get_template_directory() .'/template-custom-page.php', 'temporary content'); в существующий шаблон. Посетите эту страницу, и она создаст файл за вас (если пользователь веб-сервера имеет права на создание файлов).

Patrick Forget Patrick Forget
28 июл. 2016 г. 20:55:42
Все ответы на вопрос 8
0

Нет способа сделать это без изменения ядра.

Вы должны видеть файлы .php, которые находятся в подкаталогах, но вы не увидите ничего выше корневой директории темы для файлов .css, а также не увидите файлов JavaScript.

Если вы посмотрите на wp-admin/theme-editor.php, соответствующие строки...

<?php
$allowed_files = $theme->get_files( 'php', 1 );
$has_templates = ! empty( $allowed_files );
$style_files = $theme->get_files( 'css' );
$allowed_files['style.css'] = $style_files['style.css'];
$allowed_files += $style_files;

$theme — это объект WP_Theme, представляющий текущую тему. Он создается несколькими строками выше.

Метод get_files ищет файлы в директории, сопоставляя расширение файла (первый аргумент) и используя глубину поиска (второй аргумент). Первый вызов get_files получает все PHP-файлы в директории темы, а также любые подкаталоги на один уровень выше директории темы.

Второй вызов получает все CSS-файлы в директории темы, но не рекурсивно заходит в подкаталоги (обратите внимание на отсутствие аргумента $depth).

С этим мало что можно поделать; в theme-editor.php заметно отсутствие вызовов apply_filters и do_action, и метод get_files также их не содержит. Вы сильно ограничены.

И когда PHP не работает, пришло время попробовать некрасивые хаки на JavaScript!

К сожалению, это тоже не помогает. Я пробовал добавлять файлы в список через JavaScript и AJAX, но клик на файле, добавленном через JS, приводит к сообщению об ошибке из-за функции validate_file_to_edit, которая проверяет текущий файл на редактирование против списка $allowed_files (см. код выше, который его получает).

16 нояб. 2012 г. 05:54:01
6

Плагин Advanced Code Editor предоставляет эту функциональность.

Из описания плагина:

Включает подсветку синтаксиса во встроенных редакторах исходного кода тем и плагинов. Поддерживает PHP, HTML, CSS и JS.
Эффективно редактируйте свои темы или плагины, даже имея доступ только через браузер, благодаря подсветке синтаксиса во встроенных редакторах WordPress. Поддерживает PHP, HTML, CSS и JavaScript


Обновление: Упомянутый выше плагин, похоже, не имеет древовидной структуры для тем, только для плагинов. Однако есть другой плагин, который предоставляет эту функциональность: WPide

Из описания плагина:

Древовидная структура файлов, позволяющая получать доступ и редактировать любые файлы в папке wp-content (плагины, темы, загрузки и т.д.)

Также существует тикет в трекере по этой теме; надеемся, что это будет исправлено в будущей версии WordPress.

18 нояб. 2012 г. 21:59:42
Комментарии

Это всё ещё не то, что он ищет — этот плагин только меняет внешний вид редактора и добавляет несколько довольно крутых функций, но всё равно не позволяет редактировать все файлы в директории темы (что и является настоящей проблемой)

Nikola Ivanov Nikolov Nikola Ivanov Nikolov
19 нояб. 2012 г. 18:02:12

Справа от страницы должно быть дерево директорий... там можно получить доступ ко всем CSS, JS, HTML и PHP файлам

shea shea
19 нояб. 2012 г. 21:10:46

Вау, классный плагин, и он от участника WPSE: @bainternet :)

brasofilo brasofilo
20 нояб. 2012 г. 01:43:55

Но @NikolaIvanovNikolov прав, редактирование подпапок для тем недоступно. Редактор плагинов поддерживает эту функцию, как и обычная установка. ..... Никола, похоже, что действительно нет решения для этого, кроме как взлома ядра или создания пользовательской страницы настроек для обработки пользовательского CSS (если это был ваш случай).

brasofilo brasofilo
20 нояб. 2012 г. 02:07:17

Плагин WPide, кажется, поддерживает древовидную структуру каталогов для тем.

shea shea
20 нояб. 2012 г. 05:53:06

Этот тикет в Trac был закрыт как исправленный 4 года назад; 14175 похож, но был закрыт 19 месяцев назад как дубликат (чего именно — не указано). Похоже, что консенсус заключается в том, что это уже исправлено.

Paul Gregory Paul Gregory
20 нояб. 2012 г. 19:59:22
Показать остальные 1 комментариев
2

Я делаю то же самое, что и вы, и организую файлы в папках. Я никогда не пользуюсь этим редактором, но только что проверил один из своих сайтов и вижу файлы, но не вижу директорий. То есть файлы отображаются в списке и их можно редактировать, но они не сгруппированы по папкам. Нельзя определить, в какой папке они находятся, если не посмотреть URL в ссылках.

Если речь идет о дочерней теме, у меня возникли проблемы с отображением некоторых файлов, и я не понимаю, почему. Права доступа (владелец, группа и разрешения) совпадают у родительской темы (чьи файлы я вижу) и дочерней темы (некоторые файлы которой не отображаются). Я никогда не замечал эту проблему, пока не возник этот вопрос.

12 нояб. 2012 г. 00:19:25
Комментарии

Я вообще не вижу файлов, которые находятся в каталоге! Например, в моей папке css/ у меня есть 'style.css', 'style-med.css' и 'style-mobile.css'. Ни один из них не виден на странице "Редактировать темы" :(

Voriki Voriki
12 нояб. 2012 г. 00:33:48

Я проверил свой ответ, проверив другой сайт на другом сервере. Однако на третьем сайте у меня возникли проблемы с отображением некоторых файлов дочерней темы, но не родительской. Может ли это быть связано с вашим случаем?

s_ha_dum s_ha_dum
12 нояб. 2012 г. 00:57:02
0

Это не проблема для всех пользователей.

Поэтому обновитесь до WordPress 3.4.x, если вы еще этого не сделали.

Помните, что css/style.css будет отображаться в алфавитном порядке под буквой 'c', но отдельно в разделе Стили внизу.

Если это не сработает, попробуйте ту же тему на локальной установке - если там всё работает, возможно, их сервер не разрешает рекурсивное перечисление.

20 нояб. 2012 г. 20:05:31
0

Я сталкиваюсь с этой проблемой почти каждый день у наших клиентов WordPress.

Я использую плагин, который позволяет редактировать все файлы WordPress. Но это небезопасно для аккаунтов на shared-хостинге (иногда плагин позволяет редактировать любые файлы на всем сервере).

Этот плагин был удалён с wordpress.org (думаю, по соображениям безопасности), а домен автора теперь неактивен. Я нашёл небольшой обзор здесь: http://www.themepremium.com/access-ftp-from-wordpress-dashboard-using-myftp-wordpress-plugin/

Ниже я приведу ссылку на копию плагина.

ВАЖНО: Я не имею никакого отношения к автору этого плагина и не модифицировал его. Я не несу ответственности за то, как вы используете этот плагин.

плагин "myftp"

22 нояб. 2012 г. 19:57:56
0

Если у вас нет доступа к FTP, но вы можете использовать небольшой хак в редакторе темы...

Просто добавьте следующий код в существующий шаблон:

<?php
@file_put_contents(get_template_directory() .'/template-custom-page.php', 'temp content');
?>

Посетите URL, который использует шаблон с добавленным кодом, чтобы создать файл - он должен создаться (при условии, что пользователь веб-сервера имеет права на создание файлов в папке темы).

Удалите добавленный код из исходного шаблона (после создания файла), иначе код будет каждый раз перезаписывать содержимое файла при выполнении.

28 июл. 2016 г. 21:01:13
0

Для тех, кто ищет более свежую информацию, AceIDE (ответвление от теперь уже не поддерживаемого WPide) работает довольно хорошо для быстрых и простых правок.

Имейте в виду, что изменения тем и плагинов будут перезаписаны при обновлениях, поэтому такой способ редактирования считается плохой практикой.

5 апр. 2017 г. 09:57:57
4
-1

Если клиент не хочет или не может предоставить вам доступ по FTP, то вам не стоит с ним работать. Вы могли бы потратить время, которое ушло бы на взлом ядра, на поиск более подходящих клиентов.

21 нояб. 2012 г. 01:45:19
Комментарии

Извините, но, ИМХО, это комментарий, а не ответ.

brasofilo brasofilo
21 нояб. 2012 г. 14:23:54

Не переживайте, я не могу комментировать чужие ответы, иначе я бы просто оставил комментарий.

dmarges dmarges
21 нояб. 2012 г. 23:23:41

Ой... я так и не научился этому... извините :/

brasofilo brasofilo
21 нояб. 2012 г. 23:32:28

Эх...не переживай по этому поводу. Это скорее недостаток системы рейтинга на сайтах типа SO. Когда у тебя меньше 50 баллов, ты не можешь комментировать вопросы и тому подобное. Вообще, я прокомментировал этот вопрос только потому, что любое упоминание о редактировании системных файлов вызывает у меня тревогу — вот и среагировал спонтанно. Удачи, друг!

dmarges dmarges
23 нояб. 2012 г. 23:48:07