@BradDalton +1. Zwłaszcza, gdy nie wolno nam instalować wtyczki ani pisać funkcji, aby osiągnąć cel.
Subrata Sarkar
Odpowiedzi:
34
Przyłącz się template_include, ustaw globalnie, aby zanotować szablon ustawiony przez motyw, a następnie wczytaj tę wartość z powrotem do stopki lub nagłówka, aby zobaczyć, który szablon jest wywoływany dla danego widoku.
Jeśli chcesz użyć tego w witrynie produkcyjnej i trzymać te informacje z dala od użytkowników niebędących administratorami, dodaj trochę logiki warunkowej.
<?php // If the current user can manage options(ie. an admin)if( current_user_can('manage_options'))// Print the saved global
printf('<div><strong>Current template:</strong> %s</div>', get_current_template());?>
Teraz możesz śledzić, które widoki korzystają z jakiego szablonu, jednocześnie utrzymując te informacje z dala od użytkowników.
Jeśli coś jest nie tak z tą odpowiedzią lub jeśli ktoś może komentować, co można zrobić, aby poprawić tę odpowiedź, zrób to, upuść komentarz tutaj i podziel się swoimi przemyśleniami i pomysłami, jak poprawić tę odpowiedź.
t31os
1
To nie zadziałało, stary, mówi „Niezdefiniowana funkcja”
Cóż, jeśli wszystko, co chcesz, to sprawdzić, który plik szablonu został użyty do wygenerowania bieżącej strony, nie musisz brudzić rąk kodem;)
Jest przydatna wtyczka o nazwie Debug Bar . To świetny pomocnik w wielu sytuacjach, w tym w twojej. Zdecydowanie powinieneś to sprawdzić - dla mnie i wielu innych jest niezbędnym towarzyszem każdego rozwoju WP.
Załączam zrzut ekranu, który może sprawić, że się zakochasz ...
Aby uzyskać Debug Bar pracę , musisz włączyć wp_debugi wp_savequeriesopcje. Te opcje są domyślnie wyłączone.
Zanim jednak wprowadzisz jakiekolwiek zmiany, pamiętaj o kilku kwestiach:
Nie rób tego w środowisku produkcyjnym, chyba że strona internetowa nie zapewnia dużego ruchu.
Po zakończeniu debugowania pamiętaj o wyłączeniu opcji (szczególnie opcji wp_savequeries, ponieważ wpływa to na wydajność) witryny.
Aby wprowadzić zmiany:
Otwórz wp_config.phpplik za pomocą klienta ftp.
Wyszukaj wp_debugopcję. Edytuj to do define( 'WP_DEBUG', true );. Jeśli linia nie jest obecna, dodaj ją do pliku.
Podobnie edytuj lub dodaj linię define( 'SAVEQUERIES', true );do pliku.
@justCallMeBiru - wtyczka Debug Bar nie wymagaWP_DEBUG i SAVEQUERIESjest przez nią ulepszona .
Pat J
3
Uruchomienie takiej wtyczki, tylko dla jednego kawałka informacji, tworzy mnóstwo napowietrznych imho, i dlatego właśnie nie sugerowałem tego we własnej odpowiedzi. To powiedziawszy, wyraźnie ludzie wolą tę odpowiedź, jestem ciekawy, dlaczego.
t31os
23
Korzystam z tej przydatnej funkcji, która wyświetla bieżący szablon tylko dla superadministratorów:
function show_template(){if( is_super_admin()){global $template;
print_r($template);}}
add_action('wp_footer','show_template');
Najłatwiejszy sposób, jaki znalazłem, to włączenie funkcji WordPress do tagu body. Dodanie kilku klas w zależności od tego, którą stronę przeglądasz (strona główna dla strony przedniej, strona dla strony itp.).
Jest jeszcze jedna wtyczka typu bare-bone przeznaczona specjalnie do tego celu. Skłaniam się do zainstalowania paska debugowania, ponieważ te inne funkcje wydają się przydatne, ale ta jest bardziej podstawowa i specjalnie do tego celu:
http://wordpress.org/extend/plugins/what-the-file/
Jedną bardzo prostą rzeczą, którą robię, jest wstawienie komentarza HTML identyfikującego plik szablonu w każdym odpowiednim pliku motywu, np. Na górze pliku index.php, który mam
<!-- index -->
i na górze strony frontowej.php
<!-- front -->
Ale oczywiście wymaga to modyfikacji motywu. Podejrzewam, że możesz dodać niestandardową funkcję w pliku footer.php lub header.php, która powie ci, który plik był używany. Powyższą metodę i tabelę referencyjną http://codex.wordpress.org/Template_Hierarchy używam.
Lista HTML ze wszystkimi plikami szablonów używanych dla bieżącej strony docelowej, w tym wszystkie części szablonu z wtyczek, motywu potomnego i / lub kombinacji motywu nadrzędnego , wszystkie w jednym wierszu kodu:
MUSISZ sprawdzić , czy Twój serwer nie zwraca dubble ukośników na żadnej ścieżce . Pamiętaj, aby umieścić to po tym, jak wszystkie pliki szablonów faktycznie zostały użyte, jak w footer.php, ale przed renderowaniem paska administratora .
jeśli admin-bar stuffścieżka jest wyświetlana u góry lub w innym pliku, zmień nazwę pliku template-loader.phpw tym wierszu kodu na: dowolną nazwę pliku, z której chcesz przerwać. Często:class-wp-admin-bar.php
jeśli potrzebujesz tego na pasku administracyjnym, użyj odpowiedniego priorytetu (najwcześniej), aby mieć pewność, że żadne pliki nie zostaną wprowadzone na końcu tej listy. Na przykład:
priorytet -5upewnij się, że najpierw ładuje. Kluczem jest, aby zadzwonić get_included_files()w odpowiednim momencie, w przeciwnym razie potrzebne będzie popping tablicy!
Aby to rozbić:
Nie można zebrać wszystkich dołączonych plików szablonów bez śledzenia PHP. Superglobale w środku template_includenie zgromadzą ich wszystkich . Innym sposobem jest „umieszczenie znacznika” w każdym pliku szablonu, ale jeśli musisz najpierw wchodzić w interakcję z plikami, masz czas i cały pomysł.
1) Musimy sprawdzić wewnątrz wszystkie pliki, które były używane przez bieżące żądanie Wordpress. I jest ich wiele! Nie zdziw się, jeśli używasz 300 plików, zanim zarejestrujesz nawet plik functions.php.
Używamy natywnego get_included_files () PHP, konwertując ukośniki odwrotne na ukośniki do przodu, aby pasowały do większości ścieżek zwrotnych Wordpress.
2) Wycinamy tablicę, z której zarejestrowany jest plik template-loader.php. Następnie zapełnione pliki get_included_files () powinny zawierać tylko pliki szablonów.
/* The magic point, we need to find its position in the array */
$path = str_replace('\\','/', ABSPATH);
$key = $path.'wp-includes/template-loader.php';
$offset = array_search($key, $included_files);/* Get rid of the magic point itself in the new created array */
$offset =($offset +1);
$output = array_slice($included_files, $offset);
3) Skróć wyniki, nie potrzebujemy ścieżki, dopóki folder motywów lub folder wtyczek, jako używane szablony , nie będą mogły być mieszane z wtyczek, motywów lub folderów motywów potomnych.
Ostatnia modyfikacja może być potrzebna w części 3) -replacement , jeśli nie chcesz, aby wymagane były wtyczki. Mogą dzwonić class-filespóźno i „przechwytywać” podczas przetwarzania danych wyjściowych szablonu.
Uznałem jednak za rozsądne pozostawienie ich widocznych, ponieważ pomysł polega na śledzeniu tego, co zostało załadowane , nawet jeśli nie jest to „szablon” renderujący dane wyjściowe na tym etapie.
Odpowiedzi:
Przyłącz się
template_include
, ustaw globalnie, aby zanotować szablon ustawiony przez motyw, a następnie wczytaj tę wartość z powrotem do stopki lub nagłówka, aby zobaczyć, który szablon jest wywoływany dla danego widoku.Mówiłem o tym haku filtra wcześniej w Uzyskaj nazwę bieżącego pliku szablonu , ale idź pobierz kopię tego kodu i umieść go w
functions.php
pliku swojego motywu .Następnie otwórz motyw
header.php
lubfooter.php
(lub gdziekolwiek chcesz) i użyj czegoś takiego jak poniżej, aby wydrukować bieżący szablon.Jeśli chcesz użyć tego w witrynie produkcyjnej i trzymać te informacje z dala od użytkowników niebędących administratorami, dodaj trochę logiki warunkowej.
Teraz możesz śledzić, które widoki korzystają z jakiego szablonu, jednocześnie utrzymując te informacje z dala od użytkowników.
źródło
get_page_template
Cóż, jeśli wszystko, co chcesz, to sprawdzić, który plik szablonu został użyty do wygenerowania bieżącej strony, nie musisz brudzić rąk kodem;)
Jest przydatna wtyczka o nazwie Debug Bar . To świetny pomocnik w wielu sytuacjach, w tym w twojej. Zdecydowanie powinieneś to sprawdzić - dla mnie i wielu innych jest niezbędnym towarzyszem każdego rozwoju WP.
Załączam zrzut ekranu, który może sprawić, że się zakochasz ...
Aby uzyskać Debug Bar pracę , musisz włączyć
wp_debug
iwp_savequeries
opcje. Te opcje są domyślnie wyłączone.Zanim jednak wprowadzisz jakiekolwiek zmiany, pamiętaj o kilku kwestiach:
Aby wprowadzić zmiany:
wp_config.php
plik za pomocą klienta ftp.wp_debug
opcję. Edytuj to dodefine( 'WP_DEBUG', true );
. Jeśli linia nie jest obecna, dodaj ją do pliku.define( 'SAVEQUERIES', true );
do pliku.Więcej informacji: Kodeks
źródło
WP_DEBUG
iSAVEQUERIES
jest przez nią ulepszona .Korzystam z tej przydatnej funkcji, która wyświetla bieżący szablon tylko dla superadministratorów:
Mam nadzieję, że to pomaga. :)
źródło
Dodaj następujący kod bezpośrednio po wierszu get_header w każdym odpowiednim pliku szablonu:
W przeglądarce> wyświetl źródło, a nazwa szablonu zostanie wyświetlona jako komentarz w kodzie HTML, np
źródło
Najłatwiejszy sposób, jaki znalazłem, to włączenie funkcji WordPress do tagu body. Dodanie kilku klas w zależności od tego, którą stronę przeglądasz (strona główna dla strony przedniej, strona dla strony itp.).
Sprawdź to tutaj: http://codex.wordpress.org/Function_Reference/body_class
Dodatkowo pomaga w kierowaniu elementów za pomocą CSS na tych stronach.
Zapoznanie się z hierarchią szablonów (http://codex.wordpress.org/Template_Hierarchy), jak wspomniał David R, jest również dobrym pomysłem.
źródło
Jest jeszcze jedna wtyczka typu bare-bone przeznaczona specjalnie do tego celu. Skłaniam się do zainstalowania paska debugowania, ponieważ te inne funkcje wydają się przydatne, ale ta jest bardziej podstawowa i specjalnie do tego celu: http://wordpress.org/extend/plugins/what-the-file/
źródło
Jedną bardzo prostą rzeczą, którą robię, jest wstawienie komentarza HTML identyfikującego plik szablonu w każdym odpowiednim pliku motywu, np. Na górze pliku index.php, który mam
i na górze strony frontowej.php
Ale oczywiście wymaga to modyfikacji motywu. Podejrzewam, że możesz dodać niestandardową funkcję w pliku footer.php lub header.php, która powie ci, który plik był używany. Powyższą metodę i tabelę referencyjną http://codex.wordpress.org/Template_Hierarchy używam.
źródło
Istnieje wtyczka o nazwie Theme Check, która właśnie to robi. Wyświetla nazwę bieżącego pliku szablonu używanego jako komentarz HTML.
źródło
Proszę bardzo:
Lista HTML ze wszystkimi plikami szablonów używanych dla bieżącej strony docelowej, w tym wszystkie części szablonu z wtyczek, motywu potomnego i / lub kombinacji motywu nadrzędnego , wszystkie w jednym wierszu kodu:
MUSISZ sprawdzić , czy Twój serwer nie zwraca dubble ukośników na żadnej ścieżce . Pamiętaj, aby umieścić to po tym, jak wszystkie pliki szablonów faktycznie zostały użyte, jak w footer.php, ale przed renderowaniem paska administratora .
jeśli
admin-bar stuff
ścieżka jest wyświetlana u góry lub w innym pliku, zmień nazwę plikutemplate-loader.php
w tym wierszu kodu na: dowolną nazwę pliku, z której chcesz przerwać. Często:class-wp-admin-bar.php
jeśli potrzebujesz tego na pasku administracyjnym, użyj odpowiedniego priorytetu (najwcześniej), aby mieć pewność, że żadne pliki nie zostaną wprowadzone na końcu tej listy. Na przykład:
priorytet
-5
upewnij się, że najpierw ładuje. Kluczem jest, aby zadzwonićget_included_files()
w odpowiednim momencie, w przeciwnym razie potrzebne będzie popping tablicy!Aby to rozbić:
Nie można zebrać wszystkich dołączonych plików szablonów bez śledzenia PHP. Superglobale w środku
template_include
nie zgromadzą ich wszystkich . Innym sposobem jest „umieszczenie znacznika” w każdym pliku szablonu, ale jeśli musisz najpierw wchodzić w interakcję z plikami, masz czas i cały pomysł.1) Musimy sprawdzić wewnątrz wszystkie pliki, które były używane przez bieżące żądanie Wordpress. I jest ich wiele! Nie zdziw się, jeśli używasz 300 plików, zanim zarejestrujesz nawet plik functions.php.
Używamy natywnego get_included_files () PHP, konwertując ukośniki odwrotne na ukośniki do przodu, aby pasowały do większości ścieżek zwrotnych Wordpress.
2) Wycinamy tablicę, z której zarejestrowany jest plik template-loader.php. Następnie zapełnione pliki get_included_files () powinny zawierać tylko pliki szablonów.
3) Skróć wyniki, nie potrzebujemy ścieżki, dopóki folder motywów lub folder wtyczek, jako używane szablony , nie będą mogły być mieszane z wtyczek, motywów lub folderów motywów potomnych.
4) Na koniec przekonwertuj z tablicy na ładną listę HTML
Ostatnia modyfikacja może być potrzebna w części 3) -replacement , jeśli nie chcesz, aby wymagane były wtyczki. Mogą dzwonić
class-files
późno i „przechwytywać” podczas przetwarzania danych wyjściowych szablonu.Uznałem jednak za rozsądne pozostawienie ich widocznych, ponieważ pomysł polega na śledzeniu tego, co zostało załadowane , nawet jeśli nie jest to „szablon” renderujący dane wyjściowe na tym etapie.
źródło