WordPress Filter-Output: zwischen manuellem Excerpt und Auto-Excerpt unterscheiden

accessories 19827 1920
Bildquelle: Pixabay, PublicDomainPictures

WordPress-Seiten können entweder Inhaltsseiten sein oder so genannte Archive, das sind Seiten die mehrere Beiträge listen, und auf die jeweiligen Einzelinhalte verlinken. Die Archive zeigen je nach Theme und redaktioneller Organisation die ganzen Inhalte, einen Teaser (sofern das More-Tag nach dem Abschnitt der noch im Archiv gezeigt wird eingefügt wurde), oder einen kurzen Auszug (Excerpt).

Mein Favorit ist der Auszug, der in seiner manuellen Form gar nicht mal so oft genutzt wird, was an dem kleinen Mehraufwand liegen könnte, den er verursacht. Um ihn einzusetzen muss das Feld Auszug unterhalb des Haupteditors befüllt werden. Die Lust auf den Hauptartikel lässt sich hier durch eine gestraffte Zusammenfassung und mit Hilfe von HTML-Formatierung gezielt wecken. Wo das Auszugfeld leer blieb, greift nach wie vor noch der automatische Auszug, der den von jedwedem HTML befreiten Inhalt eines Artikels nach einer vordefinierten Anzahl Wörter beschneidet.

Welcher Filter ist wofür zuständig

the_content wirkt sich sowohl auf Artikel / Teaser in Archiven aus aus als auch auf Einzelseiten.
get_the_excerpt wirkt sowohl beim manuellen als auch beim Auto-Auszug. Das kann unter bestimmten Umständen bei der Anwendung von Filtern zu unerwünschten Effekten führen. Während es kein Problem darstellt, vor oder nach dem Auszug mittels Filter HTML einzusetzen, ist dies innerhalb des Auto-Auszugs nicht vorgesehen.

Aus diesen oder anderen Gründen kann es sinnvoll sein, beim Einsetzen des get_the_excerpt-Filters zu ermitteln, mit welcher Art Auszug man es zu tun hat, um die Vorgehensweise dem anzupassen.

function pppf_get_get_the_excerpt( $content, $post_id ) {
	$post_id = get_the_ID(); 	
	if ( false === has_excerpt( $post_id ) ) { 
	$before = '<h2>Auto Excerpt</h2>'; 
	} else $before = '<h2>Manual Excerpt</h2>'; 
	return $before . $content;
}
add_filter('get_the_excerpt', 'pppf_get_get_the_excerpt');

Kommt die Funktion auch im the_content-Filter zum Einsatz, lässt sich die Differenzierung mit doing_filter( 'get_the_excerpt' ) verfeinern.

function pppf_get_get_the_excerpt( $content, $post_id ) {
	$post_id = get_the_ID(); 	
	if ( false === has_excerpt( $post_id ) && doing_filter( 'get_the_excerpt' ) ) {
		$before = '<h2>Auto Excerpt</h2>'; 
	} elseif ( true === has_excerpt( $post_id ) && doing_filter( 'get_the_excerpt' ) ) {
		$before = '<h2>Manual Excerpt</h2>'; 
	} else { 
		$before = '<h2>Other Filter Stuff</h2>'; 
	}
	return $before . $content;
}
add_filter('get_the_excerpt', 'pppf_get_get_the_excerpt');
add_filter('the_content', 'pppf_get_get_the_excerpt');

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable