Warsztat / Porady
WordPress: pobieranie nazwy aktualnego szablonu
Bartosz Romanowski 13 stycznia 2012
komentarze (
Czasem zachodzi potrzeba sprawdzenia z jakiego szablonu korzysta aktualna strona. Ponieważ każda ze stron może korzystać z innego, a WordPress nie udostępnia funkcji ułatwiającej uzyskanie takiej informacji, trzeba posłużyć się sposobem.
Pierwszy sposób polega na wyciągnięciu nazwy szablonu (a konkretnie nazwy pliku, w którym się znajduje) z parametru _wp_page_template
strony. Dobrze jest podpiąć funkcję zwracającą tę informację do akcji init
, można również dla wygody (gdybyśmy potrzebowali tej informacji w kilku miejscach) ustawić sobie zmienną globalną zawierającą nazwę szablonu:
- Kod: Zaznacz cały
function get_current_template() { // musimy znać identyfikator strony/wpisu if(isset($_GET['post'])) $post_id = (int)$_GET['post']; elseif(isset($_POST['post_ID'])) $post_id = (int)$_POST['post_ID']; if(!isset($post_id)) return; // pobieramy wartość parametru _wp_page_template $template_file = get_post_meta($post_id, '_wp_page_template', TRUE); $GLOBALS['template_file'] = $template_file; } add_action('init', 'get_current_template');
Drugim sposobem jest wyciągnięcie nazwy pliku szablonu na etapie jego ładowania. Skorzystamy w tym celu z uchwytu template_include
(można z niego skorzystać również do podmieniania plików szablonów w locie, ale to temat na zupełnie inny tekst):
- Kod: Zaznacz cały
function get_included_template($template) { $GLOBALS['template_file'] = basename($template); return $template; } add_filter('template_include', 'get_included_template', 1000);
Jeden z powyższych fragmentów kodu należy wstawić do pliku functions.php
szablonu lub do pliku wtyczki. Od tej pory zmienna globalna $GLOBALS['template_file']
będzie zawierać nazwę pliku szablonu użytego do wygenerowania aktualnej strony.
Masz pytania lub wątpliwości? Odwiedź nasze forum dyskusyjne.