Tworzę motyw, który pokaże fragmenty na stronie głównej dla potencjalnie dziesiątek postów. Nie mam ręcznych fragmentów wszystkich moich postów, więc $post->post_excerpt
jest pusty dla wielu postów. W przypadku braku ręcznego fragmentu chciałbym użyć wbudowanej funkcji get_the_excerpt (), ale nie jest ona dostępna poza pętlą.
Śledząc funkcję, wygląda na to, że używa wp_trim_excerpt z wp-include / formatting.php do tworzenia fragmentów w locie. Nazywam to w moim kodzie wp_trim_excerpt( $item->post_content )
, ale po prostu zwraca pełną treść. czy robię coś źle?
Wiem, że mogę stworzyć własną funkcję do stworzenia fragmentu, ale lubię korzystać z wbudowanych funkcji tam, gdzie to możliwe, dzięki czemu mój kod jest kompatybilny z innymi potencjalnymi wtyczkami / filtrami.
http://adambrown.info/p/wp_hooks/hook/wp_trim_excerpt?version=3.0&file=wp-includes/formatting.php
$myvar = apply_filters( 'the_excerpt', $myvar );
Odpowiedzi:
Od wersji WP 3.3.0
wp_trim_words()
jest przydatna, jeśli możesz uzyskać zawartość, dla której chcesz wygenerować fragment. Mam nadzieję, że jest to pomocne dla kogoś i oszczędza tworzenia własnej funkcji liczenia słów.http://codex.wordpress.org/Function_Reference/wp_trim_words
źródło
wp_trim_excerpt()
ma trochę ciekawej mechaniki - jeśli coś zostanie przekazane, to nic nie robi.Oto podstawowa logika:
get_the_excerpt()
sprawdza fragment instrukcji;wp_trim_excerpt()
dzwoni, jeśli nie ma ręcznego fragmentu i tworzy jeden z treści lub zwiastuna.Oba są ściśle powiązane ze zmiennymi globalnymi, więc pętla.
Poza pętlą lepiej jest wyjmować kod
wp_trim_excerpt()
i pisać własną funkcję przycinania.źródło
Aktualizacja:
Oto pochodna wp_trim_excerpt (), której użyłem. Działa świetnie. Pochodzi z Wordpress wersja 3.0.4
źródło
Oto moje spojrzenie na „trim_excerpt”, który przyjmuje jako parametr parametr obiektu post lub identyfikator postu.
Oczywiście na podstawie tego, co jest w rdzeniu. Nie wiem, dlaczego to (i get_the_author ()) nie ma odpowiedników niepętlowych.
źródło
+1 do Rast. To bardzo dziwne, że nie ma czegoś takiego jak get_the_excerpt ($ post-> ID), kiedy powinno być całkiem oczywiste, że powinno. W każdym razie tutaj jest wp_trim_excerpt () w wordpress wersja 3.0.4:
http://core.trac.wordpress.org/browser/tags/3.0.4/wp-include/formatting.php
W wierszu 1826 widać, że jest on powiązany ze zmienną globalną $ post za pośrednictwem get_the_contents. I tak, nie mam pojęcia o czym oni myśleli. Ale odtąd zamień get_the_content na $ text we własnym my_excerpt i powinien on zachowywać się w podobny sposób.
źródło
Funkcja get_the_content () zwróci pełną treść, jeśli $ more! = 0. Musisz ustawić zmienną globalną $ more na 0, aby mieć pewność, że funkcja get_the_content () zwróci fragment.
Zmodyfikowana funkcja wp_trim_excerpt ():
źródło
Korzystając z powyższych odpowiedzi innych, oto prostsza odpowiedź, która wydaje się działać dobrze:
Używam go w
<meta>
tagach w funkcji do definiowania opisów OpenGraph. Więc po prostu dodaję:źródło