Einige WP-Hacks

Ich 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 &raquo; </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:

4 Kommentare zu “Einige WP-Hacks”

  1. xipulli
    Juni 17th, 2007 20:08
    1

    betreff „read more“:
    den kann man jetzt bei wp 2.2 auch (semi per Handarbeit) im Code mit klicken einfügen, macht also nicht soviel Arbeit, wie den Kram manuell zu schreiben. Muss ja sagen, dass ich die manuelle Variante viel schicker finde, als die automatische, weil man dann sinnvoll den entsprechenden tag setzen kann, ohne den Text total auseinanderzureißen.

  2. LeV
    Juni 18th, 2007 00:10
    2

    Generell kann man wohl seit WP 2.x den <!–read more–> Tag mit eingenem Text ausfüllen und natürlich manuell setzen. Das funktioniert aber nur, so jedenfalls bei 2.1.3, wenn im Loop die Funktion the_content() ausgeführt wird, was bei WP default ist. Nun ist es bei mir so, dass meine Artikel meist längern sind und ich mich darob entschieden habe, auf der front-page nur excerpts zu zeigen. Ich habe aber keinen Bock, jetzt für 130 Artikel und kommende jedes Mal manuell den Tag einzufügen. Deshalb wollte ich das automatisieren und das geht eben, wenn im loop statt the_content() the_excerpt() aufgerufen wird. Nur die excerpt Funktion hat nicht so schicke Parameter, dass man da einfach seinen eigenen Text eintragen kann, indem man ein Tag setzt. Das hieß für mich, ran an den Source Code. Die Variante, die ich jetzt gefunden habe, ist genau das, was ich wollte und wenn ich mich irgendwann entscheide, auf der front-page doch wieder vollständige Artikel zu präsentieren, muß ich nur die Funktion austauschen und nicht in 130 Artikeln manuell das Tag entfernen.

  3. Rosie
    Dezember 2nd, 2007 23:34
    3

    Ich wollte mich mal an dieser Stelle bedanken für die vielen wertvollen Tipps die ich hier gelesen habe. Ich bin immer wieder von neuen erstaunt, was es doch so alles gibt.
    __________
    #edit: Websitelink „http://www.internetmuetze.de“ entfernt. (Anm. LeV)

  4. LeV
    Dezember 3rd, 2007 12:04
    4

    Hallo Rosie, ich mache das normalerweise nicht, dass ich Websitelinks aus Kommentaren meiner Leser entferne. Aber die von dir angegebene Seite ist so suspekt, dass ich von meiner Seite aus keine digitale Verbindung dahin herstellen möchte. Ich sage dir das so explizit, weil es ja schon dein zweiter Versuch ist, hier mit einem Allerweltskommentar einen seltsamen Link unterzubringen und ich auf soetwas nicht besonders stehe. Ich habe trotzdem einen Texthinweis auf deine Seite stehen lassen, für all die Menschen, die an unendlichem Reichtum, geheimem Wissen und Astralreisen interessiert sein sollten…

Kommentar abgeben: