Cómo ver archivos en directorios en la pantalla "Editar Temas"
Me gusta tener carpetas en mi directorio de tema para scripts y estilos, pero no puedo acceder a estas carpetas en la interfaz de "Editar Temas". Esto es problemático para clientes que no me dan acceso FTP. ¿Hay alguna forma de ver estas carpetas y los archivos que contienen desde la sección de administración de WordPress?
No hay una manera de hacer esto sin modificar el núcleo.
Deberías ver archivos .php
que están en subdirectorios, pero no verás nada por encima del directorio raíz del tema para archivos .css
, y no verás ningún archivo JavaScript.
Si echas un vistazo a wp-admin/theme-editor.php
, las líneas relevantes son...
<?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
es un objeto WP_Theme
que representa el tema actual. Se crea unas líneas más arriba.
El método get_files
busca en un directorio haciendo coincidir la extensión del archivo (primer argumento) y usando la profundidad (segundo argumento). La primera llamada a get_files
obtiene todos los archivos PHP en el directorio del tema así como cualquier subdirectorio un nivel por encima del directorio del tema.
El segundo obtiene todos los archivos css en el directorio del tema pero no entra recursivamente en subdirectorios (observa la ausencia del argumento $depth
).
No hay mucho que puedas hacer al respecto; hay una conspicua ausencia de llamadas a apply_filters
y do_action
en theme-editor.php
y el método get_files
tampoco los tiene. Estás bastante limitado.
¡Y cuando PHP no funciona, es hora de probar los feos trucos de JavaScript!
Desafortunadamente, eso tampoco sirve. Intenté explorar añadir archivos a la lista mediante JavaScript y ajax, pero hacer clic en un archivo añadido con JS resulta en un mensaje de error debido a una función llamada validate_file_to_edit
que verifica el archivo actual a editar contra la lista de $allowed_files
(mira el código de arriba que obtiene eso).

El plugin Advanced Code Editor proporciona esta funcionalidad.
De la descripción del plugin:
Habilita el resaltado de sintaxis en los editores de código fuente integrados para temas y plugins. Soporta PHP, HTML, CSS y JS.
Edita eficientemente tus temas o plugins cuando solo tienes acceso a un navegador, al habilitar el resaltado de sintaxis en los editores de código fuente integrados de WordPress. Soporta PHP, HTML, CSS y JavaScript
Edición: El plugin mencionado anteriormente parece no tener el árbol de directorios para temas; solo para plugins. Sin embargo, existe otro plugin que sí proporciona esta funcionalidad: WPide
De la descripción del plugin:
Árbol de archivos que te permite acceder y editar cualquier archivo en tu carpeta wp-content (plugins, temas, uploads, etc.)
También ha habido un ticket en trac sobre este tema; esperemos que esto se solucione en una futura versión de WordPress.

Eso todavía no es lo que está buscando: este plugin solo cambia la apariencia del editor y de hecho añade algunas características bastante interesantes, pero aún no le permite editar todos los archivos encontrados dentro de su directorio de tema (que es el problema real)

Debería haber un árbol de directorios a la derecha de la página... puedes acceder a todos los archivos css, js, html y php ahí

Wow, plugin genial y es de un compañero de WPSE: @bainternet :)

Pero @NikolaIvanovNikolov tiene razón, no hay edición de subcarpetas para temas. El editor de plugins sí lo tiene, pero también lo tiene una instalación estándar. ..... Nikola, parece que realmente no hay solución para eso, aparte de hackear el núcleo o crear una página de opciones personalizada para manejar CSS personalizado (si ese era el caso).

El plugin WPide parece soportar un árbol de directorios para temas.

Hago lo mismo que tú y organizo las cosas en carpetas. Nunca uso ese editor pero acabo de echar un vistazo a uno de mis sitios y puedo ver los archivos pero no los directorios. Es decir, los archivos aparecen listados como presentes y son editables, pero no se muestran por directorio. No puedes saber en qué carpeta están a menos que leas la URL de los enlaces.
Si estás hablando de un tema hijo, estoy teniendo problemas para ver algunos de los archivos y no sé por qué. El propietario, grupo y permisos coinciden en el tema padre, cuyos archivos puedo ver, y en el tema hijo, algunos de cuyos archivos no puedo ver. Nunca había notado el problema hasta que surgió esta pregunta.

¡No veo ningún archivo que esté en un directorio en absoluto! Por ejemplo, en mi carpeta css/, tengo 'style.css', 'style-med.css' y 'style-mobile.css'. Ninguno de estos es visible desde la página "Editar Temas" :(

Esto no es un problema para todos los usuarios.
Por lo tanto, actualiza a WordPress 3.4.x si aún no lo has hecho.
Recuerda que css/style.css aparecerá alfabéticamente bajo la 'c', pero separado bajo Estilos al final.
Si esto no funciona, prueba el mismo tema en una instalación local - si funciona allí, podría ser que el servidor no permita el listado recursivo.

Me enfrento al mismo problema casi todos los días con nuestros clientes de WordPress.
Utilizo un plugin que permite editar todos los archivos de WordPress. Pero no es seguro para cuentas en hosting compartido (a veces el plugin permite editar cualquier archivo en todo el servidor).
Este plugin ha sido eliminado de wordpress.org (creo que por razones de seguridad) y el dominio del autor ahora ha expirado. Encontré una pequeña reseña aquí: http://www.themepremium.com/access-ftp-from-wordpress-dashboard-using-myftp-wordpress-plugin/
A continuación, publicaré un enlace a una copia del plugin.
NOTA: No tengo ninguna relación con el autor de este plugin y no lo he modificado. No me haré responsable de cómo uses el plugin.

Si no tienes acceso FTP pero puedes usar un pequeño truco en el editor de temas...
Simplemente añade el siguiente código a una plantilla existente:
<?php
@file_put_contents(get_template_directory() .'/template-custom-page.php', 'temp content');
?>
Visita una URL que esté usando la plantilla donde añadiste el código para crear el archivo y debería crearse el archivo (asumiendo que el usuario del servidor web tenga permisos para crear archivos en la carpeta del tema).
Elimina el código añadido de la primera plantilla (después de que el archivo se cree) de lo contrario el código siempre borrará el contenido del archivo cuando se ejecute.

Para aquellos que buscan información más reciente, AceIDE (un fork del ahora abandonado WPide) funciona bastante bien para ediciones rápidas y sencillas.
Ten en cuenta que las modificaciones en temas y plugins serán sobrescritas con las actualizaciones, por lo que editar de esta manera es una mala práctica.

Lo siento, pero, en mi opinión, esto es un comentario, no una respuesta.

No hay problema, no puedo comentar en otras respuestas, de lo contrario simplemente habría hecho eso.

Bah... no te preocupes por eso. Es más un defecto del sistema de puntuación de sitios tipo SO. Cuando estás por debajo de 50 no puedes comentar preguntas ni nada por el estilo. De hecho, solo comenté en esta pregunta porque cualquier cosa relacionada con tocar los archivos principales del núcleo es una gran bandera roja para mí, así que tuve una reacción instintiva. ¡Saludos colega!
