Piękne wypisy dla WordPressa

Czas na kategorię dev! Tego się nie spodziewaliście, prawda? Ja w sumie też nie. Wczoraj dostałam pytanie o to, jak działają Przeczytane Książki u mnie na blogu, a dziś „w pracy” zrobiłam tak piękny kawałek kodu, że muszę się nim pochwalić. Kod do książek zamknę we wtyczce kiedyś, spokojnie.

Dajcie znać, jak będziecie mieć dość, ale i tak to zostanie. Czas pokazać trochę więcej z kategorii „geek”.

Wyobraźcie sobie, że wchodzicie na bloga. Witają Was tam kafelki. Pod tytułem widzicie kawałek tekstu, który zazwyczaj kończy się trzema kropkami, chyba, że ktoś tego pilnuje, chociaż i wtedy te teksty mają bardzo różną długość.

Kod, który widzicie poniżej, powinien trochę z tym pomóc. A co on robi? W zdefiniowanym przez Was limicie znaków szuka pełnych zdań, a konkretnie ostatniego pełnego i dopiero po nim ucina tekst. Nie ma więc już wielokropków i myśli urwanych w połowie.

Ta-da!

Oczywiście, może się tak zdarzyć, że jednak nie spotkamy w tym kawałku końca zdania, bo myśl kończy się dwukropkiem, po którym jest lista albo filmik, albo dowolna wklejka, wtedy więc wielokropek jednak musi wskoczyć na swoje miejsce. Ale to nie zdarza się za często (no chyba, że ustawicie limit znaków na 20).

Kodu możecie używać do woli. Smacznego!

wtorek
29.11.2016
16
6

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Yzoya, a co myślisz o tym? Wiesz ja jestem total amator i miałem się do Ciebie zgłosić po pomoc w najbliższym czasie… w każdym razie Twój kod nie działał jak chciałem, więc napisałem sobie nowy ;-)

function perfect_excerpt() {
global $post;
$p_excerpt = get_the_excerpt($post->ID);
$p_lenght_1 = strrpos($p_excerpt, ’.’, -3);
$p_lenght_2 = strrpos($p_excerpt, ’?’, -3);
$p_lenght_3 = strrpos($p_excerpt, ’!’, -3);
$p_lenght = max($p_lenght_1,$p_lenght_2,$p_lenght_3);

return substr($p_excerpt, 0 , $p_lenght+1);

}

Da się to uprościć? Bo dzięki temu obcina mi tak jak powinno. Co do długości to można zastosować fabryczny filtr WordPressa.

No tak, bo jak masz filtr na ilość wyrazów, albo wychodzi ponad domyślne 55, to nadal będzie ucinał (+ obcina w miejscu, gdzie jest dodany znacznik !– more –).

Mi był potrzebny taki akurat, ze zmienną liczbą znaków – bo czasem potrzebuję dosłownie jedno zdanie, a czasem najlepiej jakby było z pięć ;) w obrębie jednego szablonu.

Mi się to kłóciło z dwoma funkcjami, które miałam – zmiana […] na zwykłe … na końcu + ograniczenie do 20 słów domyślnych excerptów.

Ciekawa koncepcja z tym max(), totalnie nie pomyślałam. Z drugiej strony – przy moim sprawdza ? i ! dopiero jak nie ma kropek.

Koleś też fajnie skomentował ten mój kawałek kodu, z wersją, która przejdzie nawet w motywach na wordpress.org
https://gist.github.com/Yzoja/4ad7953b87c7b69fdadecef1a2f953c3#gistcomment-1934582

warto było napisać ten kawałek kodu, żeby ludzi trochę rozruszać i znaleźć jeszcze lepsze i ładniejsze rozwiązania ;)

Nie wiem na ile to ważne, ale wg mnie (jak mówiłem początkujący jestem), to w moim kodzie masz strrpos() z ostatnim parametrem na „-„, co ma znaczyć, że szuka od tyłu, bo przecież tam szukamy znaków kończących. A pomysł @zaniczka:disqus z wtyczką nie jest zły ;-)

mój kod szuka ostatnich znaków, żeby było jedno zdanie, albo więcej. Ja na PHPie się szczerze nie znam za dobrze – kod działa tak, jak potrzebuję i to mi wystarczy.

No no, bardzo ładnie. U mnie są Pchełki, ale w pehapie to ja nie gawariu. Jeśli o mnie chodzi to możesz wrzucać tu tyle snippetów ile wlezie.

Pchełki? :D

No u mnie z tym PHPem to jest wiesz. Jak muszę to wejdę w dokumentację i ogarnę, to co potrzebuję na potrzeby WordPressa, ale żeby coś więcej to… mam backendowca w domu, który robi te większe rzeczy :D