Kiedy aktywujesz motyw Wordpress, zawsze trudno jest znaleźć plik, który chcesz zmienić. Masz pomysł, jak to uprościć?
Ale z drugiej strony, biorąc pod uwagę funkcjonalność get_template_part, może to być niemożliwe. Co mówisz?
Kiedy aktywujesz motyw Wordpress, zawsze trudno jest znaleźć plik, który chcesz zmienić. Masz pomysł, jak to uprościć?
Ale z drugiej strony, biorąc pod uwagę funkcjonalność get_template_part, może to być niemożliwe. Co mówisz?
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
lub footer.php
(lub gdziekolwiek chcesz) i użyj czegoś takiego jak poniżej, aby wydrukować bieżący szablon.
<div><strong>Current template:</strong> <?php get_current_template( true ); ?></div>
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.
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
i wp_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 do define( 'WP_DEBUG', true );
. Jeśli linia nie jest obecna, dodaj ją do pliku.define( 'SAVEQUERIES', true );
do pliku.Więcej informacji: Kodeks
WP_DEBUG
i SAVEQUERIES
jest przez nią ulepszona .
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');
Mam nadzieję, że to pomaga. :)
Dodaj następujący kod bezpośrednio po wierszu get_header w każdym odpowiednim pliku szablonu:
<!-- <?php echo basename( __FILE__ ); ?> -->
W przeglądarce> wyświetl źródło, a nazwa szablonu zostanie wyświetlona jako komentarz w kodzie HTML, np
<!-- page.php -->
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.
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.
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.
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:
echo '<ul><li>'.implode('</li><li>', str_replace(str_replace('\\', '/', ABSPATH).'wp-content/', '', array_slice(str_replace('\\', '/', get_included_files()), (array_search(str_replace('\\', '/', ABSPATH).'wp-includes/template-loader.php', str_replace('\\', '/', get_included_files())) + 1)))).'</li></ul>';
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.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:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
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.
$included_files = str_replace('\\', '/', get_included_files());
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.
$replacement = $path.'wp-content/';
$output = str_replace($replacement, '', $output);
4) Na koniec przekonwertuj z tablicy na ładną listę HTML
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
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.