web-dev-qa-db-fra.com

Comment voir les fichiers dans les répertoires dans l'écran "Éditer les thèmes"

J'aime avoir des dossiers dans mes dossiers de thèmes pour les scripts et les styles, mais je ne peux pas accéder à ces dossiers dans l'interface "Éditer les thèmes". Ceci est problématique pour les clients qui ne me donnent pas d'accès FTP. Existe-t-il un moyen de voir ces dossiers et les fichiers qu’ils contiennent à partir de la section admin de Wordpress?

4
Andrei Khramtsov

Il n'y a pas moyen de faire cela sans modifier le noyau.

Vous devriez voir les fichiers .php qui se trouvent dans les sous-répertoires, mais vous ne verrez rien au-dessus du répertoire du thème racine pour les fichiers .css et vous ne verrez aucun fichier JavaScript.

Si vous regardez wp-admin/theme-editor.php , les lignes pertinentes sont ...

<?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 est un WP_Theme objet représentant le thème actuel. C'est créer quelques lignes ci-dessus.

La méthode get_files recherche dans un répertoire en faisant correspondre l'extension de fichier (premier argument) et en utilisant la profondeur (second argument). Le premier appel à get_files extrait tous les fichiers PHP du répertoire du thème, ainsi que tous les sous-répertoires situés un niveau au-dessus du répertoire du thème.

La seconde récupère tous les fichiers css dans le répertoire du thème mais elle ne va pas récursivement dans les sous-répertoires (remarquez l'absence de l'argument $depth).

Vous ne pouvez pas faire grand chose à ce sujet. il y a une absence flagrante d'appels à apply_filters et do_action dans theme-editor.php et la méthode get_files en manque également. Vous êtes assez limité.

Et quand PHP ne fonctionne pas, il est temps d'essayer les horribles piratages JavaScript!

Malheureusement, ce n'est pas bon non plus. J'ai essayé d'explorer l'ajout de fichiers à la liste via JavaScript et ajax, mais un clic sur un fichier ajouté à JS entraîne l'affichage d'un message d'erreur dû à la fonction validate_file_to_edit qui compare le fichier en cours à éditer à la liste de $allowed_files (voir le code ci-dessus ).

9
chrisguitarguy

Le Advanced Code Editor plugin fournit cette fonctionnalité.

D'après la description du plugin:

Active la coloration syntaxique dans les éditeurs de code source des thèmes et des plugins intégrés. Prend en charge PHP, HTML, CSS et JS.
Modifiez efficacement vos thèmes ou plug-ins lorsque vous n’avez accès qu’à un navigateur, en activant la coloration syntaxique dans les éditeurs de code source intégrés WordPress. Prend en charge PHP, HTML, CSS et JavaScript


Edit: Le plugin mentionné ci-dessus ne semble pas avoir d'arborescence de répertoires pour les thèmes; seulement des plugins. Il existe cependant un autre plugin qui (fait _ fournit cette fonctionnalité: WPide

D'après la description du plugin:

Arborescence de fichiers vous permettant d'accéder et de modifier n'importe quel fichier de votre dossier wp-content (plugins, thèmes, téléchargements, etc.)

Il y a également eu un ticket trac sur ce sujet; j'espère que cela sera corrigé dans une future version de WordPress.

5
shea

Si vous n'avez pas d'accès FTP mais que vous pouvez utiliser un petit hack dans l'éditeur de thème ...

Ajoutez simplement le code suivant à un modèle existant:

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

Visitez une URL qui utilise le modèle dans lequel vous avez ajouté le code pour créer le fichier. Le fichier doit alors être créé pour vous (si l'utilisateur du serveur Web est autorisé à créer des fichiers dans le dossier du thème).

Supprimez le code ajouté du premier modèle (après la création du fichier), sinon le code effacera toujours le contenu du fichier lorsqu'il sera exécuté.

0
Patrick Forget

Je fais la même chose que toi et organise les choses dans des dossiers. Je n'utilise jamais cet éditeur, mais je viens de jeter un coup d'œil sur l'un de mes sites et je peux voir les fichiers, mais pas les répertoires. Autrement dit, les fichiers sont répertoriés comme présents et modifiables, mais ils ne sont pas affichés par répertoire. Vous ne pouvez pas savoir dans quel dossier ils se trouvent à moins de lire l'URL des liens.

Si vous parlez d'un thème pour enfants, j'ai du mal à voir certains fichiers et je ne sais pas pourquoi. Le propriétaire, le groupe et les autorisations correspondent au thème parent, aux fichiers que je peux voir et au thème enfant, à certains fichiers dont je ne peux pas voir. Je n'avais jamais remarqué le problème jusqu'à ce que cette question soit posée.

0
s_ha_dum

Pour ceux qui recherchent des informations plus récentes, AceIDE (créé à partir de WPide, qui n'est plus maintenu), fonctionne assez bien pour les modifications rapides et sales.

Gardez à l'esprit que les modifications de thème et de plug-in seront écrasées par les mises à jour. Cette méthode est donc une mauvaise pratique.

0
Walf

Ce n'est pas un problème pour tous les utilisateurs.

Par conséquent, effectuez une mise à jour vers WordPress 3.4.x si ce n'est déjà fait.

Rappelez-vous que css/style.css apparaîtra alphabétiquement sous "c", mais sera séparé sous Styles en bas.

Si cela ne fonctionne pas, essayez le même thème sur une installation localhost - si cela fonctionne, il se peut que leur serveur n'autorise pas la liste récursive.

0
Paul Gregory

Je rencontre le même problème presque tous les jours avec nos clients WordPress.

J'utilise un plugin qui vous permet d'éditer tous les fichiers de WordPress. Mais ce n'est pas sûr pour les comptes sur l'hébergement partagé (parfois, le plugin permet d'éditer tous les fichiers sur le serveur entier).

Ce plugin a été supprimé de wordpress.org (je pense pour des raisons de sécurité) et le domaine de l'auteur a maintenant expiré. J'ai trouvé une petite critique ici: http://www.themepremium.com/access-ftp-from-wordpress-dashboard-using-myftp-wordpress-plugin/

Ci-dessous, je posterai un lien vers une copie du plugin.

NOTE: Je n'ai pas de relations avec l'auteur de ce plugin et je ne l'ai pas modifié. Je ne serai pas tenu responsable de la façon dont vous utilisez le plugin.

"myftp" plugin

0
KOt