Wenn ich folgenden Code in die Seite einbaue - für das Abschneiden des Auszugs und dann im Theme statt the_excerpt excerpt_chars(150) verwende, nimmt er statt des Auszugs die ersten Zeichen des eigentlichen Artikels.
Nee Ahnung warum??
[php]/**
* Entfernt unvollständige Worte am Ende eines Strings.
* @author Thomas Scholz <http://toscho.de>
* @param $str Zeichenkette
* @return string
*/
function end_on_word($str)
{
// Jedes Wort ein Eintrag im Array …
$arr = explode(\' \', trim($str) );
// … letztes Stück wegwerfen …
array_pop($arr);
// … den String wieder herstellen und Kommas trimmen.
return rtrim( implode(\' \', $arr), \',;\');
}
/**
* Erzeugt einen Auszug mit genau definierter Zeichenzahl.
*
* @param int $chars Menge der Zeichen.
* @param bool $echo Aus- oder Rückgabe
* @return string
*/
function excerpt_chars($chars = 100, $echo = TRUE)
{
global $post;
$out = strip_tags($post->post_content);
$out = substr($out, 0, (int) $chars);
$out = end_on_word($out) . \' …\';
$out = xwp_autop($out);
if ( $echo )
{
echo $out;
return;
}
return $out;
}
/**
* Wandelt Zeilenumbrüche in HTML-Code.
* wpautop() ist hier nicht nötig
* @source photomatt.net/scripts/autop
* @param string $pee zu formatierender String
* @param bool $br
* @return string
*/
function xwp_autop($pee, $br=1)
{
// cross-platform newlines
$pee = preg_replace("/(\\r\\n|\\n|\\r)/", "\\n", $pee);
// take care of duplicates
$pee = preg_replace("/\\n\\n+/", "\\n\\n", $pee);
// make paragraphs, including one at the end
$pee = preg_replace(\'/\\n?(.+?)(\\n\\n|\\z)/s\', "
$1
\\n", $pee);
// optionally make line breaks
if ($br) $pee = preg_replace(\'|(?<!)\\s*\\n|\', "
\\n", $pee);
return $pee;
}[/PHP]
Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de
Beitrag erstellen
EinloggenKostenlos registrieren