To był bardzo dobry rok dla WordPress’a. Jeśli były jeszcze jakieś wątpliwości co do tego, czy WordPress może być uznany za pełny system zarządzania treścią, to wersja 3.0 położyła im kres. Natomiast wersja 3.1 poszła jeszcze o krok dalej. W WordPress 3.1 znajduje się bowiem wiele różnego rodzaju udogodnień. Przykładem może być chociażby nowa funkcja, która znacznie ułatwia edycję i dodawanie nowych materiałów administratorowi.
Aby lepiej zobrazować rozwój WordPress, przyjrzyjmy się teraz kilku ciekawym sztuczkom, które mogą nam pomóc w lepszym zarządzaniu stronami i w lepszym ich tworzeniu.
Słowo wstępne: Co to jest „zaczep”?
Większość z przedstawionych poniżej porad wymaga skorzystania z podstawowych „zaczepów” WordPress. Zaczepy są pewnymi punktami w kodzie, które umożliwiają pluginom podpięcie się pod resztę Wrdpress’a. Istnieją one po to aby wywołać odpowiednie funkcje pluginów w określonym czasie, czyli krótko mówiąc, ustawić plugin w ruchu. WordPress posiada dwa rodzaje zaczepów: Actions oraz Filters.
Zaczepy Actions uruchamiają rdzeń WordPress’a w określonych punktach- albo w trakcie albo po wystąpieniu danych zdarzeń. Służą do przechwytywania pewnych działań i wykonywania kilku dodatkowych funkcji. Na przykład, kiedy jest publikowany nowy post, programista może dodać takie funkcje jak na przykład link do Twitter’a.
Zaczepy Filters pozwalają programiście przechwycić i zmodyfikować dane, które są przetwarzane przez WordPress. Dla przykładu, twórca może chcieć wprowadzić reklamy do treści przed wyświetleniem wiadomość na ekranie.
Dowiedz się więcej o zaczepach na http://codex.wordpress.org/Plugin_API.
Wykorzystaj w pełni funkcję paginacji (dzielenie na strony)
Na oficjalnym wyposażeniu WordPress’a znajduje się wiele ciekawych i wartościowych plug-in’ów. Jednakże wykorzystywanie ich jest w niektórych przypadkach dość uciążliwe. Podczas gdy plug-in jest bardzo przydatnym narzędziem dla konsultantów, to dla twórców templatek są one średnio użyteczne. Twórca skórki chce przecież stworzyć w pełni funkcjonalny i samodzielny szablon.
WP-PageNavi jest jedną z najbardziej popularnych wtyczek WordPress. Bez wątpienia jest również dobrze rozwinięta. Co więcej, szczególnie zadowoleni z niej będą Ci, którzy czują się nieswojo podczas pracy z kodem WordPress. Ale czy wiesz, że WordPress posiada wbudowaną w rdzeń funkcję, która może generować linki paginacji (numerowanie stron) dosłownie na wszystko?
Funkcją tą jest paginate_links(). Wierzcie mi lub nie, ale ta rzadko wykorzystywana funkcja jest już od wersji 2.1. Inną funkcją o podobnym zastosowaniu jest, paginate_comment_links(). Jest ona tak naprawdę tylko bardziej szczegółową odmianą funkcji paginate_links(). Stworzono ją specjalnie do stronicowania komentarzy. Można ją znaleźć już w wersji 2.7.
Funkcja pobiera całą tablicę informacji, co sprawia, że jest wystarczająco uniwersalna, aby ją używać do każdego rodzaju stronicowania:
- base
Jest to ścieżka do linków numerów stron.
- format
Znaki %#% zostaną zastąpione przez numer strony. Na przykład, page/%#% lub ?page=%#% .
- total
Całkowita liczba dostępnych stron.
- current
Numer bieżącej strony.
- show_all
Lista wszystkich linków do stron.
- prev_next
Zawiera linki „Wstecz” oraz „Następna”
- prev_text i next_text
Możemy tutaj wpisać własny tekst do przycisków „Wstecz” oraz „Następna”.
- end_size
Liczba linków stron wyświetlanych na końcu. Domyślnie jest to jeden link.
- mid_size
Liczba wyświetlanych linków pomiędzy obecną stroną, a ostatnią. Domyślnie 2 linki. Na przykład: 1 … 3 4 5 6 7 … 10.
- type
Pozwala na określenie stylu wyświetlania linków.
Skorzystajmy z tej funkcji do wygenerowania linków paginacji w archiwum artykułów:
global $wp_query;
$total = $wp_query->max_num_pages;
if ( $total > 1 ) {
if ( !$current_page = get_query_var('paged') )
$current_page = 1;
$format = empty( get_option('permalink_structure') ) ? '&page=%#%' : 'page/%#%/';
echo paginate_links(array(
'base' => get_pagenum_link(1) . '%_%',
'format' => $format,
'current' => $current_page,
'total' => $total,
'mid_size' => 4,
'type' => 'list'
));
}
Zmiana nazwy „Post” na „Article”
Chciałeś kiedykolwiek zmienić nazwy linków we wbudowanym menu lub w powiadomieniach? Jeśli jesteś trochę obeznany w WordPress, uczynisz to bez większych trudności. Być może nie wiesz jeszcze, że możesz „zaczepić” funkcje tłumaczące w WordPress poprzez przechwytywanie danych wejściowych i ich modyfikację.
Jednakże bądź ostrożny z tą sztuczką, bowiem kod, który należy wykorzystać w tym „zaczepie” będzie tłumaczył nam dany ciąg znaków za każdym razem, gdy filtr na niego natrafi. Może to spowodować nagromadzenie się niechcianych tłumaczeń. Taka sytuacja może mieć miejsce przede wszystkim na stronach wypełnionych tłumaczeniami jak na przykład strony administracyjne. Ale jeśli chcemy po prostu zmienić jedną rzecz, która nie pasuje do ogólnej koncepcji strony (przykładem może być zmiana tekstu „Post” na „Article”), to taki zaczep może się okazać bardzo przydany.
// zaczep fltry tłumaczące
add_filter( 'gettext', 'change_post_to_article' );
add_filter( 'ngettext', 'change_post_to_article' );
function change_post_to_article( $translated ) {
$translated = str_ireplace( 'Post', 'Article', $translated ); //ireplace jest tylko w PHP5
return $translated;
}
Przekierowanie po błędnym logowaniu
Dodanie formularza logowania w WordPress jest bardzo proste. WordPress 3.0 dał nam bowiem elastyczną funkcję wp_login_form() dzięki której za pomocą kilku argumentów możemy dowolnie dostosować formularz logowania. Domyślnie, nastąpi przekierowanie użytkownika z powrotem do aktualnej strony po udanym uwierzytelnieniu. Jednakże możemy również dostosować własne przekierowanie lokalizacji.
wp_login_form(array( 'redirect' => site_url() )); // przekieruje nas z powrotem do strony głównej
Jest tylko jeden problem- to przekierowanie działa tylko i wyłącznie po udanym uwierzytelnieniu! Jeśli Twój pomysł opiera się na tym, aby ukryć domyślny ekran logowania WordPress, to wysłanie użytkowników, którzy nie przejdą poprawnie procesu logowania do domyślnego ekranu nie jest dobrym rozwiązaniem. Poniżej przedstawiam odpowiedni zaczep i kod, który należy umieścić w pliku functions.php. Takie rozwiązanie przekieruje użytkownika, który nie przeszedł autoryzacji do dowolnego miejsca.
add_action( 'wp_login_failed', 'my_front_end_login_fail' ); // zaczep bledne logowanie
function my_front_end_login_fail( $username ) {
$referrer = $_SERVER['HTTP_REFERER'];
if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
wp_redirect( $referrer . '?login=failed' );
exit;
}
}
Dodanie Wypisów (Excerpts) do stron
Dosłownie każdy typ danych w WordPress może obsługiwać dowolną liczbę podstawowych funkcji, takich jak edytor HTML, tytuły, zdjęcia i tak dalej. Jedną z tych podstawowych funkcji jest również „Wypis”. Jednakże domyślnie nasze strony ich nie obsługują. Na szczęście dodanie wsparcia Wypisów wymaga wklejenia zaledwie kilku linijek kodu.
add_action( 'init', 'my_add_excerpts_to_pages' );
function my_add_excerpts_to_pages() {
add_post_type_support( 'page', 'excerpt' );
}
Jednocześnie warto zwrócić uwagę, że w wielu skórkach ten zaczep został zaimplementowany, zatem nie zawsze jest potrzeba jego ręcznego dodawania.
„Możesz mieć pełny dostęp do ustawień strony, ale nie mów, że Cię nie ostrzegaliśmy”
Klienci często oczekują pełnego dostępu administracyjnego (i słusznie), w tym również dostępu do ustawień strony. Przyjrzyjmy się zatem, jak możemy zaczepić powiadomienia administratora (pola ostrzeżeń generowane przez plug-in). Oczywiście robimy to w celu ostrzeżenia użytkowników administracyjnych, gdy znajdują się oni na ustawieniach strony.
add_action( 'admin_notices', 'my_admin_notice' );
function my_admin_notice(){
global $current_screen;
if ( $current_screen->parent_base == 'options-general' )
echo '
Uwaga ? zmiana tych ustawień może spowodować problem z wyglądem Twojej strony!
';
}
Usuń niechciane elementy menu
Niektóre elementy współczesnych stron internetowych wykorzystywane są coraz rzadziej. Na szczęście, nowa, mało znana funkcja dodana w WordPress 3.1 daje nam możliwość bardzo łatwego usunięcia tych niechcianych elementów z menu. Jednym z takich elementów niewątpliwie są „Linki”. Poniższy kod pozwoli nam na ich usunięcie.
add_action( 'admin_menu', 'my_admin_menu' );
function my_admin_menu() {
remove_menu_page('link-manager.php');
}
Dodaj własny tekst w stopce
Jeśli tworzysz skórkę dla klienta, to z pewnością chciałbyś gdzieś umieścić informację kto ją wykonał. Zwyczajowo robi się to w stopce. Jak wykonać to w WordPress? Wystarczy do tego zaledwie kilka linijek kodu.
add_filter( 'admin_footer_text', 'my_admin_footer_text' );
function my_admin_footer_text( $default_text ) {
return '
Podsumowanie
Widać więc, że zaczepy to potężne narzędzie. Jednakże zastosowania zaprezentowane w tym artykule to tylko nieliczne możliwości nowego WordPress 3.1. Z wszystkimi atutami zaczepów możemy zapoznać się na: http://codex.wordpress.org