Jeśli traktujesz WordPress wyłącznie jako aplikację do blogowania lub, nawet w bardziej liberalnym sensie, system zarządzania treścią, prawdopodobnie przywykłeś do używania edytora lub pola fragmentu do napisania zwiastuna, a następnie wprowadź link Czytaj więcej.
WordPress dla aplikacji internetowych (ponownie)
Dla tych, którzy czytają tę stronę od dłuższego czasu, jestem szczególnie zainteresowany wykorzystaniem WordPressa jako podstawy do tworzenia aplikacji internetowych (zobacz także to, to, to i to ).
W momencie pisania tego posta jest to artykuł mający około sześciu lat.
Zdarzają się więc sytuacje, w których treść, którą zamierzasz renderować na interfejsie użytkownika, może pochodzić ze źródła zewnętrznego.
Powrót do spisu treści
Oznacza to, że aplikacja działa tak:
- skontaktować się z zewnętrznym API,
- importuj dane z połączenia i w razie potrzeby je parsuj,
- zapisz go do bazy danych,
- renderować informacje na interfejsie użytkownika na żądanie.
Jest wiele rzeczy, które można zrobić pomiędzy każdym z powyższych kroków, ale najważniejszą rzeczą, którą chcę podzielić się w tym poście, jest skuteczny sposób łatwego obcinania tekstu za pomocą PHP do renderowania na interfejsie użytkownika.
Jest to przydatne do dostarczania zwiastunów, tworzenia linków do witryn innych firm i nie tylko, bez konieczności ręcznego pisania lub edytowania treści.
Aby podać przykładowy przypadek użycia funkcji, którą zamierzam udostępnić, warto mieć pewne wymagania. Są arbitralne dla tego postu, ale implementacja powinna być na tyle konkretna, aby można było wrzucić to do posta bez żadnych problemów.
Załóżmy:
- pobieramy tekst z zewnętrznego API,
- dane są przechowywane gdzieś w bazie danych,
- dane są zwykłym tekstem (bez znaczników lub innego rodzaju podmiotów internetowych w strukturze),
- potrzebujemy funkcji, która akceptuje tekst i długość do obcięcia tekstu.
Biorąc pod uwagę te wymagania, możemy skonfigurować funkcję akceptującą tekst i długość argumentów. Jeśli tekst jest mniejszy lub równy określonej długości, nie ma nic do zrobienia; w przeciwnym razie możemy skrócić tekst do określonej długości i dodać końcowe elipsy.
<?php
/**
* Truncates the specified text to the specified length to the last whole word and
* adds ellipses to the end of the truncated string.
*
* @param string $text The text to truncate.
* @param int $length The maximum allowed length of the text.
* @return string The text if it's less than the length of the specified length or the text truncated to the specified length.
*/
public function truncate($text, $length)
{
if ($length >= strlen($text)) {
return $text;
}
return preg_replace(
"/^(.{1,$length})(s.*|$)/s",
'1...',
$text
);
}
Implementacje do tego w kontekście WordPressa mogą pochodzić z odczytu danych przechowywanych w niestandardowych tabelach, w metadanych postów, w tabeli postów lub w zasadzie w dowolnym miejscu, w którym przechowywany jest surowy tekst i chcesz go wyrenderować na interfejsie użytkownika .
Jeśli w tekście znajduje się inna treść, taka jak HTML lub inne elementy, może być konieczne wprowadzenie poprawek. Jeśli jest w WordPress, istnieją filtry i inne formy obsługi tych danych przed obcięciem tekstu, ale to wykracza poza cel łatwego obcinania tekstu w PHP, prawda?
Więc przynajmniej używaj tego wyłącznie do tekstu i, co najwyżej, uwzględnij inne rodzaje treści w tekście przed przekazaniem go do preg_replace i powinieneś być gotowy.