Rejestracja i użycie dynamicznych paneli w Wordpresie

.

WordPress posiada zaimplementowany koncept dynamicznych paneli.
Panele takie można traktować jako pojemniki, do których mamy możliwość
wrzucenia różnego rodzaju funkcjonalność definiowaną za pomocą kodu i ujęta w kontener jakim jest widżet.
Domyślnie motywy Wordpresa posiadają od jednego do kilkunastu zarejestrowanych dynamicznych paneli.

Widżet w przypadku WordPress to, jak już wspomniałem wyżej, pewna jednostkowa funkcjonalność ujęta w postaci kodu. W panelu administracyjnym mamy dostęp do zakładki Wygląd -> Widgety gdzie istnieją widżety taki jak: Archiwa, Kalendarz, Kategorie, RSS i kilkanaście innych.

Aby dynamiczny panel był widoczny na blogu, należy poczynić pewne przygotowania.
Po pierwsze należy upewnić się, że w zakłądce widżetów panelu administracyjnego są widoczne jakieś dynamiczne panele. Jeżeli, jest tam choć jeden, należy kliknąć na jego nagłówek, która to czynność otworzy kontener na widżety.

Drugim krokiem jest przeciągnięcie z sekcji z widżetami do wyżej nadminionego kontenera tych, które chcemy mieć w panelu.
Kolejność widżetów ustala się poprzez przeciąganie ich w obrębie kontenera.

Jeżeli nasz panel jest poprawnie zarejestrowany i włączony w motywie, wybrana funkcjonalność powinna pojawić się w panelu bocznym bloga.

Rejestracja dynamicznego panelu bocznego

Załóżmy, że mamy motyw, który nie posiada jeszcze żadngeo dynamicznego panelu bocznego.
Do rejestracji nowych paneli służy funkcja register_sidebar. Funkcja przyjmuje argumenty w postaci tablicy i są to:

name – definiuje nazwę panelu bocznego ( widoczna w nagłówku panelu )
id – unikalna nazwa, za pomocą której ten panel będzie identyfikowany pośród innych
description – opis panelu widoczny po jego otwarciu,
before_widget – znaczniki html wstawiane przed zawartością wyświetlaną przez każdy widżet w tym panelu
after_widget – znaczniki html dołączane do zawarotości każdego widżetu w tym panelu
before_title – znaczniki html wstawiane przed tytułem widżetu
after_title – znaczniki html wstawiane za tytułem widżetu

Aby więc zarejestrować pierwszy dynamiczny panel bocznym należy umieścić kod, który znajduej się poniżej w pliku functions.php
aktywengo motywu.


add_action( 'widgets_init', 'register_my_sidebar' );
function register_my_sidebar(){
  register_sidebar(
    array(
      'name' => 'Mój dynamiczny panel',
	  'id' => 'my_dynamic_sidebar',
      'description' => 'Moj dynamiczny panel boczny',
      'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
      'after_widget' => '</li>',
      'before_title' => '<h3 class="widget-title">',
      'after_title' => '</h3>',
	)
  );
}

W tym momencie nowy panel boczny o nazwie "Mój dynamiczny panel" powinien być dostępny w zakładce Wygląd -> widgety panelu administracyjnego Wordpresa.

Aby panel był widoczny na naszych stronach należy go umiejscowić w którymś z plików motywu.

Dynamiczne panele wywołuje się z pomocą funkcji dynamic_sidebar,
która przyjmuje jeden argument tj. id lub nazwę panelu i zwraca prawdę jeżeli panel został odnaleziony lub fałsz w przeciwnym wypadku.

Aby więc wyświetlić panel zarejestrowany z pomocą akcji powyżej należy dodać kod jak poniżej w którymś z plików aktywnego motywu :

Dynamiczne panele w oddzielnych plikach motywu

Dynamiczne panele mogą być wyświetlane również z właściwych sobie plików, które rozpoczynających się od przedrostka sidebar-

W przypadku wyżej dodanego panelu nazwa pliku wyglądałaby jak następuje:

sidebar-my_dynamic_sidebar.php

Do wyświetlania paneli w Wordpresie służy funkcja get_sidebar, która gdy wywołana bez argumentów, włączy plik sidebar.php aktywnego motywu. Jeżeli argmentem jest nazwa panelu bocznego w postaci : sidebar-id_panelu, spróbuje ona włączyć plik o nazwie sidebar-id_panelu.php, który powinien znajdować się w katalogu głównym aktywnego motywu Wordpresa.

Załóżmy więc, że edytujemy plik index.php do którego chcemy włączyć nagłówek, stopkę i dynamiczny panel boczny o nazwie my_dynamic_sidebar. Możemy zrobić to jak następuje:


<?php get_header() ?>
<?php get_sidebar('sidebar-my_dynamic_sidebar') ?>
<?php get_footer() ?>

Podsumumy, w Wordpresie dynamiczne panele boczne są kontenerami na widżety.
Panele boczne rejestruje się za pomocą funkcji register_sidebar i włącza z pomocą funkcji get_sidebar.
Panel boczny może znajdować się we właściwym dla siebie pliku, który składa się z przedrostka sidebar- i identyfikatora dynamicznego panelu.

Więcej informacji o funkcjach omawianych w tym wpisie można znaleźć na stronach kodeksu Wordpresa (get_sidebar,register_sidebar,dynamic_sidebar).


Komentarze ( 2 )


Czy można ustawić dla każdej strony inny dynamiczny panel? Czyli dla strony x używam widgetu HtmlText X, a dla strony Y używam widgetu HtmlText Y?


Można. Najłatwiej jest to zrobić z pomocą warunkowych funkcji motywów (conditional template tags). Ustawiamy panele. Każdy panel może mieć dowolne widżety. Panele działają jak kontenery, są niezależne od siebie. Podobnie widżety w panelach, możliwe jest ustawienie tej samej funkcjonalności ( ten sam widżet) z innymi danymi w dwóch różnych panelach. Można tego dokonać w panelu administratora lub programistycznie w pliku functions.php aktywnego motywu (jeżeli zmiana ma być specyficzna dla motywu ) lub w pliku wtyczki (niezależnie od motywu).


Twój komentarz





Niektóre tagi XHTML są dozwolone
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>