Ich habe einen Code, der get_the_title()
und es funktioniert, aber get_the_excerpt()
leer zurück. Wie kann ich es funktionieren lassen?
Dieser Code befindet sich in einem Plugin namens “WP Facebook Open Graph protocol”. Hier ist der Teil, den ich ändern möchte:
if (is_singular('post')) { if (has_excerpt($post->ID)) { echo "\tID)))."' />\n"; }else{ echo "\t\n"; } }else{ echo "\t\n"; }
Hier has_excerpt
immer fehl, und get_the_excerpt($post->ID)
funktioniert nicht mehr (veraltet).
Also, wie kann ich den Auszug dort anzeigen?
ps: Ich benutze auch das “Advanced Excerpt” -Plugin
Ich habe diese Frage gefunden, wenn ich sehe, wie ich das ohne das Post-Objekt machen kann.
Meine zusätzliche Forschung hat diese glatte Technik aufgezeigt:
$text = apply_filters('the_excerpt', get_post_field('post_excerpt', $post_id));
Da es scheint, dass Sie bereits das Post-Objekt haben, für das Sie den Auszug benötigen, können Sie einfach Dinge zum Arbeiten zwingen:
setup_postdata( $post ); $excerpt = get_the_excerpt();
Die function setup_postdata()
globalisiert das $post
Objekt und stellt es für die normale alte Schleifenfunktion zur Verfügung. Wenn Sie sich innerhalb der Schleife befinden, rufen Sie the_post()
und the_post()
Dinge für Sie ein … außerhalb der Schleife müssen Sie sie manuell erzwingen.
Versuche dies:
Erstellen Sie eine neue function in functions.php und rufen Sie sie von überall her auf.
function get_excerpt_by_id($post_id){ $the_post = get_post($post_id); //Gets post ID $the_excerpt = $the_post->post_content; //Gets post_content to be used as a basis for the excerpt $excerpt_length = 35; //Sets excerpt length by word count $the_excerpt = strip_tags(strip_shortcodes($the_excerpt)); //Strips tags and images $words = explode(' ', $the_excerpt, $excerpt_length + 1); if(count($words) > $excerpt_length) : array_pop($words); array_push($words, '…'); $the_excerpt = implode(' ', $words); endif; $the_excerpt = '' . $the_excerpt . '
'; return $the_excerpt; }
Hier ist ein Beitrag, der den Code beschreibt.
Jetzt können Sie einfach die function get_the_excerpt( $postID )
verwenden. Seit: WordPress 4.5.0 führte den $post
Parameter ein.
habe es mit my_excerpt($post->post_content, get_the_excerpt())
und mit der my_excerpt()
-function von Using wp_trim_excerpt benutzt, um the_excerpt () außerhalb der Schleife zu erhalten
Falls Sie das Post-Objekt nicht haben, hier ist eine kurze function wie die von Withers.
function get_excerpt_by_id($post_id){ $the_post = get_post($post_id); $the_excerpt = $the_post->post_excerpt; return $the_excerpt; }
Dies ist für, wenn Sie get_the_excerpt()
außerhalb der Schleife verwenden get_the_excerpt()
:
function custom_get_excerpt($post_id) { $temp = $post; $post = get_post($post_id); setup_postdata($post); $excerpt = get_the_excerpt(); wp_reset_postdata(); $post = $temp; return $excerpt; }
Wenn Sie den Auszug automatisch aus dem Inhalt in einer Zeile generieren wp_trim_words
können wp_trim_words
function wp_trim_words
wie wp_trim_words
verwenden:
// 30 is the number of words ehere $excerpt = wp_trim_words(get_post_field('post_content', $post_id), 30);