Ich habe das Gefühl, dass mir hier etwas ziemlich Offensichtliches fehlt, aber ich kann WordPress anscheinend nicht dazu bringen, zusammenzuarbeiten.
Ich generiere Facebook OG-Tags mit einer Funktion. Bis auf den Auszug funktioniert alles einwandfrei.
Gibt es seit der Ablehnung von get_the_excerpt($post->ID)
eine andere Möglichkeit, einen Auszug zu erstellen, ohne eine ganz neue Schleife erstellen zu müssen? Es scheint mir übertrieben.
Mein erster Instinkt war apply_filters()
:
$description = apply_filters('the_excerpt', get_post($post->ID)->post_content);
Das gibt mir den vollständigen Beitrag mit HTML-formatierten Inhalten. Okay, muss falsch sein. Also habe ich die nächste logische Idee ausprobiert:
$description = apply_filters('get_the_excerpt', get_post($post->ID)->post_content);
Kein Würfel. Jetzt gibt es kein HTML, aber es ist immer noch der vollständige Beitrag (was wirklich verwirrend ist).
Okay kein Problem. Lassen Sie uns all die ausgefallenen Sachen überspringen und einfach zum gekürzten Eintrag gehen:
$description = wp_trim_excerpt(get_post($post->ID)->post_content);
Keine Änderung.
Meine Frage lautet also: Was zum Teufel ist los? Fehlt mir hier etwas?
Ich bin in den WP-Kern gekommen, um herauszufinden, wie es the_excerpt()
funktioniert, und es scheint mit meinem Aufruf identisch zu sein:
/**
* Display the post excerpt.
*
* @since 0.71
* @uses apply_filters() Calls 'the_excerpt' hook on post excerpt.
*/
function the_excerpt() {
echo apply_filters('the_excerpt', get_the_excerpt());
}
Ich habe einige Fragen, die auf meinen Erkenntnissen beruhen:
- Warum wird der Filter nicht wie erwartet angewendet?
- Gibt es eine Möglichkeit, den Auszug außerhalb der Schleife abzurufen, ohne eine neue Schleife zu erstellen?
- Bin ich verrückt?
Vielen Dank im Voraus für einen Blick. Ich bin hier ziemlich ratlos.
get_the_excerpt()
wird nicht veraltet, nur der zusätzliche Parameter, der früher an ihn übergeben wurde, wird nicht mehr verwendet.Antworten:
Es stellte sich heraus, dass die Antwort in war
wp_trim_excerpt()
.Es ist definiert in
wp-includes/functions.php:1879
:Übergebener Text wird also nicht verarbeitet. Es funktioniert nur, wenn es mit einem leeren Parameter aufgerufen wird.
Um dies zu lösen, habe ich meinem Thema einen Schnellfilter hinzugefügt, der das Problem löst:
Es ist etwas überflüssig, aber es gefällt mir besser, als jedes Mal, wenn ich einen Auszug erstellen möchte, neue Schleifen zu öffnen.
quelle
get_the_title($post->ID)
Verfügung. Die letzte Codezeile war$description = wp_trim_excerpt(get_post($post->ID)->post_content);
$content = apply_filters( 'rw_trim_excerpt', $content );
und versucht$content = rw_trim_excerpt($content);
, aber keines davon hat funktioniert (das erste hat die Ausgabe nicht gekürzt und das spätere hat einen Fehler erzeugt).get_the_excerpt
Behandlungthe_excerpt
so ändern , dass sie nachahmt , sodass Sie Folgendes aufrufen können :apply_filters('get_the_excerpt', $content);
.Versuchen:
Siehe:
get_post
Codex für alle verfügbaren Rückkehrmitglieder.quelle
get_the_excerpt()
ahmt das nicht nach, überprüfen Sie die Quelle, es greift nur auf die Mitgliedsvariable zu, von$post
der es istpost_excerpt
. Siehe auch den Codex-Link in der Antwort.the_excerpt
: "Es wird ein automatischer Auszug angezeigt, der auf die ersten 55 Wörter des Inhalts des Beitrags verweist." Ich möchte dieses Verhalten außerhalb der Schleife nachahmen.Sie können meine benutzerdefinierte Funktion verwenden, um den Inhalt zu filtern (er stammt aus NARGA Framework ).
Shortcode, HTML-Code automatisch trimmen, [...] entfernen, Text "Read More" hinzufügen (übersetzbar)
quelle