Einige WP-Hacks
Freitag, 08. Juni 2007Ich bin kein geübter oder gar geschulter Coder. Aber um mein Blog meinen Wünschen anzupassen fummel ich dann doch ab und zu im Quelltext herum. Um für mich zu dokumentieren, welche Änderungen ich im Code vorgenommen habe, aber auch um anderen WordPress Bloggern, die ähnliche Wünsche haben, ein Beispiel zu geben, möchte ich hier meine „WP-Hacks“ aufführen. Mein ist dabei relativ – ich versuche mit anzugeben, wo ich abgeguckt habe. 😉
excerpts + read more
Weil ich doch immer relativ lange Artikel verfasse, dachte ich, dass es der Übersichtlichkeit halber vielleicht sinnvoll ist, auf der front-page nur Textauszüge zu zeigen. Weil ich nicht jedesmal durch Handarbeit das „more-tag“ einfügen wollte, habe ich einfach in der index.php meines Themes anstelle der the_content() Funktion die the_excerpt() Funktion aufgerufen.
Nun wurde der „optional excerpt“ angezeigt, wo es aber keinen gab, da hörte der Text einfach nach 55 Zeichen mit einem […] auf. Weil es nicht intuitiv ist, dass man dann auf den Titel klicken muß, um den ganzen Artikel zu lesen, dachte ich mir, dieses […] müßte irgendwie zu einem „weiterlesen »“ Link werden. Also habe ich in der wp-includes/formatting.php die Funktion wp_trim_excerpt gefunden und die Zeile
array_push($words, '[...]');
einfach wie folgt abgeändert:
array_push($words, '<a href="' . apply_filters('the_permalink', get_permalink()) . '" rel="bookmark" title="more-link">weiterlesen » </a>');
Mein Dank geht an Jowra, moshu und das Team von WordPress.
post meta-data
Da ich die Diskussion auf meiner Seite fördern möchte, dachte ich, am Anfang jedes Posts, den Autor, die Zahl der Kommentare und den Link zur Kommentarfunktion anzugeben. Dazu ergänzte ich in der index.php, der achrive.php und single.php an der gewünschten Stelle (nämlich unter dem post-title) folgenden Code:
<p>von <?php the_author() ?><?php edit_post_link('Edit',' ',''); ?>
<?php if (('open' == $post-> comment_status)) {
// Comments are open ?>
| <a href="<?php the_permalink() ?>#comments"><?php comments_number('0 Kommentare', '1 Kommentar', '% Kommentare'); ?></a> | <a href="<?php the_permalink() ?>#respond">kommentieren</a>
<?php } elseif (!('open' == $post-> comment_status)) {
// Comments are closed ?>
geschlossen
<?php } ?>
</p>
reverse comments
Für mein Gästebuch habe ich einfach eine normale wp-page angelegt. In der functions.php meines Themes habe ich folgenden Code eingefügt, um die jüngsten Kommentare auf dieser Seite nach oben zu holen:
function reverse_comments($comments,$id)
{
if ($id == 54) {
$comments = array_reverse($comments);
}
return $comments;
}
add_filter('comments_array', 'reverse_comments',10,2);
Um auch noch die Nummerierung der Kommentare umzudrehen, so dass der älteste Kommentar tatsächlich 1 und der jüngste eben die Zahl der Kommentare ist, habe ich in der comments.php meines Themes zunächst
<?php if ($id == 54) { $commentcount = count($comments); $direction = -1; }
else { $commentcount=1; $direction=1; } ?>
vor dem Comment-Loop eingefügt. Dann habe ich die Zeile, in der das div mit der commentnumber generiert wird, gegen folgende ausgetauscht:
<div class="commentnumber"><?php echo $commentcount; $commentcount=$commentcount+$direction; ?></div>
Danke an Otto42.
__________
Links: