Ich habe einen Code, der aufruft get_the_title()
und es funktioniert, aber get_the_excerpt()
leer zurück. Wie kann ich es zum Laufen bringen?
Dieser Code befindet sich in einem Plugin namens "WP Facebook Open Graph-Protokoll". Hier ist der Teil, den ich ändern möchte:
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";
}
Hier has_excerpt
immer scheitern und get_the_excerpt($post->ID)
nicht mehr funktionieren (veraltet).
Wie kann ich den Auszug dort anzeigen?
ps: Ich benutze auch das "Advanced Excerpt" -Plugin
my_excerpt($post->post_content, get_the_excerpt())
und mit dermy_excerpt()
Funktion von wordpress.stackexchange.com/questions/6961/…the_post()
Sie einfach die Funktion (sie funktioniert auch für einzelne Post-Templates), bevor Sie sie aufrufenget_the_excerpt()
, um die erforderlichen Daten für Sie einzurichten.Antworten:
Ich habe diese Frage gefunden, als ich nach einer Möglichkeit gesucht habe, ohne das Post-Objekt zu verwenden.
Meine zusätzliche Recherche ergab diese Technik:
$text = apply_filters('the_excerpt', get_post_field('post_excerpt', $post_id));
quelle
$post
globalen Variablen.$post_id
ist (was ist der Wert von$post_id
? AND$post_id
ist eine gültige, legitime Beitrags-ID.Da Sie anscheinend bereits über das Post-Objekt verfügen, für das Sie den Auszug benötigen, können Sie die Arbeit erzwingen:
Die
setup_postdata()
Funktion globalisiert das$post
Objekt und stellt es für die reguläre alte Schleifenfunktion zur Verfügung. Wenn Sie sich innerhalb der Schleife befinden, rufen Sie anthe_post()
und es richtet die Dinge für Sie ein. Außerhalb der Schleife müssen Sie sie manuell erzwingen.quelle
$post
Variable übergeben, sonst funktionieren Funktionen wiethe_title()
nicht richtig."global $post;$post = $post_object;setup_postdata( $post );$excerpt = get_the_excerpt();
setup_postdata($post);
FTW !!!!Versuche dies:
Erstelle eine neue Funktion in functions.php und rufe sie von überall auf.
Hier ist ein Beitrag, der den Code beschreibt.
quelle
Jetzt können Sie einfach die
get_the_excerpt( $postID )
Funktion nutzen. Seit: WordPress 4.5.0 hat den$post
Parameter eingeführt.quelle
wp_trim_excerpt
Filter den Auszug für den aktuellen Beitrag zurückgibt.habe es mit
my_excerpt($post->post_content, get_the_excerpt())
und mit dermy_excerpt()
Funktion von Using wp_trim_excerpt, um the_excerpt () außerhalb der Schleife zu bekommenquelle
Falls Sie das Post-Objekt nicht haben, finden Sie hier eine kurze Funktion wie die von Withers.
quelle
Dies ist für den Fall, dass Sie
get_the_excerpt()
außerhalb der Schleife verwenden möchten :quelle
Wenn Sie den Auszug automatisch aus dem Inhalt in einer Zeile generieren möchten, können Sie die folgende
wp_trim_words
Funktion verwenden:quelle
quelle