Erhalten Sie einen Auszug mit get_the_excerpt außerhalb einer Schleife

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

Solutions Collecting From Web of "Erhalten Sie einen Auszug mit get_the_excerpt außerhalb einer Schleife"

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);