Cum să vezi fișierele din directoare în ecranul "Editare Temă"
Îmi place să am foldere în directorul temei pentru scripturi și stiluri, dar nu pot accesa aceste foldere în interfața "Editare Temă". Acest lucru este problematic pentru clienții care nu îmi oferă acces FTP. Există vreo metodă prin care să pot vedea aceste foldere și fișierele din ele direct din secțiunea de administrare WordPress?
Nu există o modalitate de a face acest lucru fără a modifica nucleul.
Ar trebui să vezi fișierele .php
care se află în subdirectoare, dar nu vei vedea nimic deasupra directorului rădăcină al temei pentru fișierele .css
și nu vei vedea niciun fișier JavaScript.
Dacă te uiți la wp-admin/theme-editor.php
, liniile relevante sunt...
<?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
este un obiect WP_Theme
care reprezintă tema curentă. Este creat câteva rânduri mai sus.
Metoda get_files
caută într-un director prin potrivirea extensiei fișierului (primul argument) și folosind adâncimea (al doilea argument). Prima apelare a get_files
preia toate fișierele PHP din directorul temei, precum și din orice subdirectoare de un nivel deasupra directorului temei.
A doua preia toate fișierele CSS din directorul temei, dar nu intră recursiv în subdirectoare (observă lipsa argumentului $depth
).
Nu poți face prea multe în legătură cu asta; există o lipsă evidentă a oricăror apeluri la apply_filters
și do_action
în theme-editor.php
, iar metoda get_files
le lipsește de asemenea. Ești destul de limitat.
Și când PHP nu funcționează, este timpul să încerci hack-urile urâte cu JavaScript!
Din păcate, nici asta nu merge. Am încercat să explorez adăugarea fișierelor în listă prin JavaScript și ajax, dar dacă dai click pe un fișier adăugat prin JS, primești un mesaj de eroare din cauza unei funcții numite validate_file_to_edit
, care verifică fișierul curent de editat față de lista de $allowed_files
(vezi codul de mai sus care preia acea listă).

Pluginul Advanced Code Editor oferă această funcționalitate.
Din descrierea pluginului:
Activează evidențierea sintaxei în editorii integrați de cod sursă pentru teme și pluginuri. Suportă PHP, HTML, CSS și JS.
Editează eficient temele sau pluginurile tale atunci când ai acces doar printr-un browser, prin activarea evidențierii sintaxei în editorii de cod sursă integrați în WordPress. Suportă PHP, HTML, CSS și JavaScript
Editare: Pluginul menționat mai sus nu pare să aibă arborele de directoare pentru teme; doar pentru pluginuri. Există însă un alt plugin care ofică această funcționalitate: WPide
Din descrierea pluginului:
Arbore de fișiere care îți permite să accesezi și să editezi orice fișier din directorul wp-content (pluginuri, teme, încărcări etc.)
De asemenea, a existat un ticket trac pe această temă; sperăm că această problemă va fi rezolvată într-o versiune viitoare a WordPress.

Încă nu este ceea ce caută el - acest plugin doar schimbă aspectul editorului și adaugă câteva funcții interesante, dar tot nu îi permite să editeze toate fișierele din directorul temei sale (care este problema reală)

Ar trebui să existe un arbore de directoare în partea dreaptă a paginii... poți accesa toate fișierele css, js, html și php de acolo

Uau, plugin mișto și este de la un coleg de la WPSE: @bainternet :)

Dar @NikolaIvanovNikolov are dreptate, nu există editare în subdirectoare pentru teme. Editorul de plugin-uri o are, dar la fel și o instalare simplă. ..... Nikola, se pare că nu există cu adevărat nicio soluție pentru asta, în afară de hack-uit nucleul sau crearea unei pagini de opțiuni personalizate pentru a gestiona CSS personalizat (dacă acesta era cazul).

Plugin-ul WPide pare să suporte un arbore de directoare pentru teme.

Fac același lucru ca tine și organizez lucrurile în foldere. Niciodată nu folosesc acel editor, dar am aruncat o privire pe unul dintre site-urile mele și pot vedea fișierele, dar nu și directoarele. Adică fișierele sunt listate ca fiind prezente și sunt editabile, dar nu sunt afișate pe directoare. Nu poți spune în ce folder se află decât dacă citești URL-ul pentru linkuri.
Dacă vorbim despre un child theme, am probleme în a vedea unele dintre fișiere și nu știu de ce. Proprietarul, grupul și permisiunile corespund atât pe tema părinte, ale cărei fișiere le pot vedea, cât și pe child theme, ale cărui fișiere unele nu le pot vedea. Nu observasem problema până când nu a apărut această întrebare.

Nu văd niciun fișier care să fie într-un director deloc! De exemplu, în folderul meu css/, am 'style.css', 'style-med.css' și 'style-mobile.css'. Niciunul dintre acestea nu este vizibil din pagina "Editare teme" :(

Acesta nu este o problemă pentru toți utilizatorii.
Prin urmare, actualizați la WordPress 3.4.x dacă nu ați făcut-o deja.
Rețineți că css/style.css va apărea alfabetic sub litera 'c', dar separat sub secțiunea Stiluri în partea de jos.
Dacă acest lucru nu funcționează, încercați aceeași temă pe o instalare localhost - dacă funcționează acolo, ar putea fi din cauza faptului că serverul lor nu permite listarea recursivă.

Mă confrunt cu aceeași problemă aproape în fiecare zi în relația cu clienții noștri WordPress.
Folosesc un plugin care vă permite să editați toate fișierele WordPress. Dar nu este sigur pentru conturile de hosting partajat (uneori plugin-ul permite editarea oricăror fișiere de pe întregul server).
Acest plugin a fost eliminat de pe wordpress.org (cred din motive de securitate) și domeniul autorului a expirat. Am găsit o mică recenzie aici: http://www.themepremium.com/access-ftp-from-wordpress-dashboard-using-myftp-wordpress-plugin/
Mai jos voi posta un link către o copie a plugin-ului.
NOTĂ: Nu am nicio legătură cu autorul acestui plugin și nu l-am modificat. Nu voi fi răspunzător pentru modul în care folosiți plugin-ul.

Dacă nu ai acces FTP dar poți folosi un mic hack în editorul de teme...
Pur și simplu adaugă următorul cod într-un șablon existent:
<?php
@file_put_contents(get_template_directory() .'/template-custom-page.php', 'conținut temporar');
?>
Accesează un URL care folosește șablonul unde ai adăugat codul pentru a crea fișierul și ar trebui să creeze fișierul pentru tine (presupunând că utilizatorul serverului web are permisiunea de a crea fișiere în directorul temei).
Șterge codul adăugat din primul șablon (după ce fișierul este creat) altfel codul va șterge mereu conținutul fișierului când este executat.

Pentru cei care caută informații mai recente, AceIDE (un fork al WPide, care nu mai este întreținut) funcționează destul de bine pentru editări rapide și neoficiale.
Rețineți că modificările aduse temelor și plugin-urilor vor fi suprascrise la actualizări, așa că editarea în acest mod este o practică proastă.

Nicio problemă, nu pot comenta la alte răspunsuri altfel aș fi făcut doar asta.

Meh... nu-ți face griji. E mai mult o problemă cu sistemul de punctaj de pe site-urile de tip SO. Când ai sub 50 de puncte, nu poți comenta la întrebări sau chestii de genul ăsta. De fapt, am comentat la această întrebare doar pentru că orice legat de modificarea fișierelor de bază este un semn de alarmă major pentru mine, așa că am avut o reacție impulsivă. Noroc, amice!
