Kurs WordPress (7)

Autor: Damian Chodorek • Opublikowany: 15 grudnia 2014 • Ostatnia aktualizacja: 8 lutego 2015 • Kategoria: kursy, wordpress

Dodawanie własnego kontenera na widgety.

Widgety muszą znajdować się w jakimś kontenerze. Zazwyczaj nazywa się on sidebar lub aside. Nie należy jednak utożsamiać położenia kontenera z jego nazwą. Nie musi być wcale z boku. Miejsce na widgety może znajdować się przykładowo w stopce, czy w górnej części strony.

Własny kontener

Tak, możemy stworzyć widget i dodać go do istniejącego kontenera. Jest ich dość sporo we frameworku Thematic. My jednak chcemy zrozumieć co i jak, a więc na wstępie zajmiemy się stworzeniem kontenera.

Cały proces sprowadza się do zarejestrowania takiego obszaru na widgety. W tym celu, przykładowo w pliku functions.php umieścimy kod, który tego dokona.

//zarejestruj dodatkowe miejsce na widgety w footerze
function my_footer_aside() {

  register_sidebar(
    array(
      'name' => 'My Footer Aside',
      'id' => 'footer-aside',
      'description' => __('Dodatkowe miejsce na widgety', 'thematic'),
      'before_widget' => thematic_before_widget(),
      'after_widget' => thematic_after_widget(),
      'before_title' => thematic_before_title(),
      'after_title' => thematic_after_title(), 
    )
  );

}

add_action('init', 'my_footer_aside');

Po wykonaniu tej operacji, w panelu administratora pojawi się nowy kontener na widgety (Wygląd -> Widgety). Do funkcji register_sidebar() przekazywana jest tablica asocjacyjna zawierająca parametry naszego kontenera. Poniżej opis.

  • name – nazwa obszaru,
  • id – pojawi się w odpowiednich div’ach na stronie,
  • description – opis, który zobaczy administrator w panelu,
  • before_widget, after_widget, before_title, after_title – kod, który ma zostać wstawiony przed i po widgecie oraz jego tytule. W przykładzie korzystamy z funkcji frameworka Thematic, żeby wszystko na stronie było spójne, ale równie dobrze moglibyśmy użyć własnych znaczników.

Co dzieje się w linijce __('Dodatkowe miejsce na widgety', 'thematic')? Odpalamy funkcję __(), która odpowiada za przetłumaczenie danego komunikatu. WP stara się znaleźć odpowiednio zdefiniowany plik z tłumaczeniem, a następnie zamiast podanego komunikatu wyświetla jego przetłumaczoną wersję. Na tym etapie należy traktować to bardziej jako ciekawostkę niż coś niezbędnego. Powinieneś jednak wszystkie teksty na sztywno w swoim szablonie, przekazywać do funkcji tłumaczącej. Jest to dobra praktyka.

Wyświetlanie kontenera

Zarejestrowaliśmy obszar, w którym mogą zostać umieszczone widgety. Nie będą one jednak widoczne. Definicja kontenera odnosi się jedynie do panelu administracyjnego. Aby obszar wyświetlił się na stronie, należy dokonać odpowiedniej modyfikacji szablonu. Dokonamy tego przy użyciu zaczepów.

function add_my_footer_aside() {

  if ( is_sidebar_active('footer-aside') ) {
    //przed widgetem dodajemy znacznik otwierający
    echo thematic_before_widget_area('footer-aside');
    dynamic_sidebar('footer-aside');
    //znacznik zamykający
    echo thematic_after_widget_area('footer-aside');
  }

}

add_action('thematic_footer','add_my_footer_aside', 10);

Przy pomocy zaczepu dodajemy do szablonu zdefiniowany przez nas kontener. Korzystamy z instrukcji is_sidebar_active('footer-aside'), aby sprawdzić, czy administrator dodał do tego obszaru jakieś widgety. W przeciwnym razie nie ma sensu go wyświetlać.

Po dodaniu powyższego kodu, obszar wraz z widgetami powinien pojawić się na Twojej stronie.

Usuwanie kontenera

Jeżeli z jakichś powodów potrzebowałbyś usunąć dany kontener, to powinieneś skorzystać z poniższego kodu.

function remove_my_footer_aside() {
  unregister_sidebar('footer-aside');
}

add_action('init', 'remove_my_footer_aside', 20);

Ważny jest tutaj priorytet. Powinien być on większy niż zaczepu, który odpowiada za dodanie obszaru. Jest oczywiste, że chcemy usunąć coś co zostało najpierw dodane.

część 8

Zobacz również
Kurs WordPress (3)Pierwsze kroki. Framework Thematic.
Kurs WordPress (4)Przeszukiwanie i dołączanie plików szablonu. Wstrzykiwanie treści. Mechanizm zaczepów i filtrów.
Kurs WordPress (5)Przeszukiwanie i dołączanie plików szablonu. Wstrzykiwanie treści. Mechanizm zaczepów i filtrów.
Kurs WordPress (6)Dodawanie filtrów. Własna pętla oraz szablon podstrony.
Kurs WordPress (8)Tworzenie własnego widgetu.
Kurs WordPress (9)Dodanie możliwości edycji szablonu.
Projektowanie stron WWW (1)10 heurystyk Jakoba Nielsena – Twoja ściąga.
Kurs obiektowego JavaScript (1)Wstęp, historia i zastosowanie języka. Dla kogo jest ten kurs?