Beim Schreiben eines “Related Posts”-Plugins für ein neues Theme musste ich feststellen dass es in WordPress keine Funktion gibt welche den Auszug (Excerpt) für eine Seite bzw. einen Artikel in Abhängigkeit der Artikelnummer ($post_id) lesen oder erstellen kann. Also habe ich eine entsprechende Funktion geschrieben und gleich den “excerpt_more“-Filter aus der zukünftigen aktuellen Version 2.9 implementiert.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | Function get_the_excerpt($post_id = Null){ If ($post_id == Null) $post_id = get_the_ID(); // Get the post $post = get_post ($post_id); // check if password is required If ( post_password_required($post) ){ $excerpt = __('There is no excerpt because this is a protected post.'); // translation in the core text domain return $excerpt; } If ($post->post_excerpt != ''){ // get the users excerpt $excerpt = $post->post_excerpt; } Else { // Create the excerpt $excerpt = $post->post_content; $excerpt = strip_shortcodes( $excerpt ); $excerpt = apply_filters('the_content', $excerpt); $excerpt = str_replace(']]>', ']]>', $excerpt); $excerpt = strip_tags($excerpt); $excerpt_length = apply_filters('excerpt_length', 55); $excerpt_more = apply_filters('excerpt_more', '[...]'); $words = explode(' ', $excerpt, $excerpt_length + 1); If ( Count($words) > $excerpt_length ){ Array_Pop($words); Array_Push($words, $excerpt_more); $excerpt = Implode(' ', $words); } } // Run filters - there is a bug if you try to run an empty excerpt through the filter If ($excerpt != '') $excerpt = apply_filters('get_the_excerpt', $excerpt); return $excerpt; } |
Die Funktion heißt genau wie das Original “get_the_excerpt” und kann die aktuelle get_the_excerpt aus post-template.php nicht überschreiben. Die neue Funktion muss also umbenannt oder, wie ich es empfehlen würde, in einer Klasse deklariert werden.

