Mam kod, który wywołuje get_the_title()
i działa, ale get_the_excerpt()
zwraca pusty. Jak mogę to zrobić?
Ten kod znajduje się we wtyczce o nazwie „WP Facebook Open Graph protokół”. Oto część, którą chcę zmienić:
if (is_singular('post')) {
if (has_excerpt($post->ID)) {
echo "\t<meta property='og:description' content='".esc_attr(strip_tags(get_the_excerpt($post->ID)))."' />\n";
}else{
echo "\t<meta property='og:description' content='". [?] ."' />\n";
}
}else{
echo "\t<meta property='og:description' content='".get_bloginfo('description')."' />\n";
}
Tutaj has_excerpt
zawsze zawodzą i get_the_excerpt($post->ID)
nie działają już (przestarzałe).
Jak mogę wyświetlić tam fragment?
ps: Używam również wtyczki „Advanced Excerpt”
my_excerpt($post->post_content, get_the_excerpt())
i korzystając zmy_excerpt()
funkcji z wordpress.stackexchange.com/questions/6961/...the_post()
(działa również na szablonie pojedynczego postu) funkcji, zanim zadzwoniszget_the_excerpt()
, aby skonfigurować niezbędne dane dla Ciebie.Odpowiedzi:
Znalazłem to pytanie, patrząc, jak to zrobić bez obiektu postu.
Moje dodatkowe badania ujawniły tę zręczną technikę:
$text = apply_filters('the_excerpt', get_post_field('post_excerpt', $post_id));
źródło
$post
zmiennej globalnej.$post_id
jest ustawiony (jaka jest wartość$post_id
? ORAZ$post_id
jest prawidłowym, prawidłowym identyfikatorem posta.Ponieważ wydaje się, że masz już obiekt postu, do którego potrzebujesz fragmentu, możesz po prostu zmusić rzeczy do działania:
setup_postdata()
Funkcja globalizacji ten$post
obiekt i udostępnić go dla zwykłej funkcji starej pętli. Gdy jesteś w pętli, dzwonisz,the_post()
a ona konfiguruje wszystko dla ciebie ... poza pętlą musisz wymusić to ręcznie.źródło
$post
zmiennej globalnej , w przeciwnym razie funkcje takie jakthe_title()
nie działają poprawnie”.global $post;$post = $post_object;setup_postdata( $post );$excerpt = get_the_excerpt();
setup_postdata($post);
FTW !!!!Spróbuj tego:
Utwórz nową funkcję w functions.php, a następnie wywołaj ją z dowolnego miejsca.
Oto post opisujący kod.
źródło
Teraz możesz po prostu użyć
get_the_excerpt( $postID )
funkcji. Ponieważ: WordPress 4.5.0 wprowadził$post
parametr.źródło
wp_trim_excerpt
filtr zwróci fragment bieżącego wpisu.mam go używając
my_excerpt($post->post_content, get_the_excerpt())
i korzystając zmy_excerpt()
funkcji Używając wp_trim_excerpt, aby uzyskać wyjście_excerpt () poza pętlęźródło
Jeśli nie masz obiektu post, oto krótka funkcja, taka jak ta z Withers.
źródło
Dzieje się tak, gdy chcesz używać
get_the_excerpt()
poza pętlą:źródło
Jeśli chcesz automatycznie wygenerować fragment z treści w jednym wierszu - możesz użyć
wp_trim_words
funkcji takiej jak ta:źródło
źródło