Dennis Hoppe

selbständiger Entwickler / Unternehmer / Student aus Berlin; schreibt über PHP, JavaScript, WordPress, jQuery, CodeIgniter, GTK und mehr.
Sie sind hier: Artikel → Excerpt beliebiger Artikel ermitteln

Excerpt beliebiger Artikel ermitteln

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.

Hinterlassen Sie eine Antwort