Wypis szyty na miarę

utworzone przez | Wrz 3, 2011 | Blog, WordPress | 0 komentarzy

Wypis, to jeden z nieodzownych elementów WordPressa. Jego przewagą nad funkcją the_content() jest to, że automatycznie generuje „tekst zajawki” artykułu. Ta metoda ma też jedną wadę… Standardowo pozwala wyświetlić aż (w niektórych przypadkach tylko) 55 pierwszych wyrazów. Dziś o tym jak zrobić wypis dokładnie taki jak chcemy.

Po co się z tym męczyć

Jakby nie patrzeć  funkcja the_content() jest bardziej elastyczna. Sami możemy zdecydować w którym momencie zakończyć tekst zajawki. Problem zaczyna się w momencie gdy stronę redaguje osoba, która nie ma czasu czy też ochoty na zgłębianie tajników WordPressa (czyli najczęściej nasz Klient). Wtedy automatyzacja tworzenia zajawki artykułu wydaje się najlepszym rozwiązaniem.

Zabieramy się do pracy

Zanim zaczniemy jeszcze trochę o wypisie. Funkcja wp_trim_excerpt() odpowiada za kształt naszego wypisu i znajduje się w folderze wp-includes w pliku formatting.php. Nic nie stoi na przeszkodzie by bezpośrednio w tym pliku dokonać interesujących nas zmian. Pozostaje oczywiście problem aktualizacji, kiedy to znów będziemy musieli edytować parametry powyższej funkcji. Z pomocą przychodzą nam hooki, dzięki którym z poziomu naszego tematu graficznego będziemy mogli zmodyfikować wypis.

W tym celu otwieramy nasz plik functions.php i wklejamy:

1) Kod wyłączający stary kształt wypisu

[php]<?php remove_filter(‚get_the_excerpt’, ‚wp_trim_excerpt’);?>[/php]

2) Kod definiujący nowy kształt wypisu

[php]<?php function nowy_trim_excerpt($text) {
global $post;
if ( ” == $text ) {
$text = get_the_content(”);
$text = apply_filters(‚the_content’, $text);
$text = str_replace(‚\]\]\>’, ‚]]&gt;’, $text);
$text = preg_replace(‚@<script[^>]*?>.*?</script>@si’, ”, $text);
$text = strip_tags($text, ‚<p>’);
$excerpt_length = 20;
$words = explode(‚ ‚, $text, $excerpt_length + 1);
if (count($words)> $excerpt_length) {
array_pop($words);
array_push($words, ‚[…]’);
$text = implode(‚ ‚, $words);
}
}
return $text;
} ?>[/php]

Powyższy kod zaczerpnąłem ze strony Aaronrussell.co.uk. Oprócz zmiany wartości dla $excerpt_length, w kodzie została dodana linijka [php]$text = preg_replace(‚@<script[^>]*?>.*?</script>@si’, ”, $text);[/php] usuwająca z tekstu zajawki elementy niepożądane elementy kodu JavaScript, oraz została zmieniona wartość strip_tags(), dzięki czemu można dodawać elementy HTML do tekstu zajawki.

3) Informację dla WordPressa o zmianie funkcji odpowiedzialnej za wypis

[php]<?php add_filter(‚get_the_excerpt’, ‚nowy_trim_excerpt’);?>[/php]

0 komentarzy

Wyślij komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.