21. Januar 2011 / 1 Kommentar

[WordPress] Ein paar Code-Schnipsel

WordPress bietet mithilfe von Datenbankabfragen fast unzählige Möglichkeiten zur Auswertung von Artikeln, Kommentaren, etc.. Diese können dann an geeigneter Stelle im eigenen Theme ausgegeben werden. Hier habe ich mal einige nette Abfragen und Funktionen zusammengestellt.

Eine Liste der Top Ten Tags

Zeigt eine Liste der zehn meistverwendeten Tags eures Blogs. Ich verwende diese Abfrage im Footer.

[php]
<?php
$tags = get_tags( array(‚orderby‘ => ‚count‘, ‚order‘ => ‚DESC‘, ’number‘ => ’10‘) );
foreach ( (array) $tags as $tag ) {
echo ‚<li><a href="‘ . get_tag_link ($tag->term_id) . ‚" rel="tag">‘ . $tag->name . ‚ (‚ . $tag->count . ‚) </a></li>‘;
}
?>
[/php]

Eine Liste mit verwandten Artikeln

Zeigt eine Liste mit fünf verwandten Artikeln. Die Verwandschaft wird anhand des ersten Tags ermittelt. Ich nutze diese Abfrage in der single.php.

[php]
<?php
// aktuellen Artikel speichern
global $post;
$originalPost = clone $post;
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$first_tag = $tags[0]->term_id;
$args=array(
‚tag__in‘ => array($first_tag),
‚post__not_in‘ => array($post->ID),
’showposts’=>5,
‚caller_get_posts’=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a> vom <?php the_time(‚j. F Y‘) ?></li>
<?php
endwhile;
} else { echo "Keine ähnlichen Artikel gefunden";
}
//aktuellen Artikel wiederherstellen
$GLOBALS[‚post‘] = $originalPost;
setup_postdata($originalPost);
}
?>
[/php]

Liste der letzten fünf Kommentare

Zeigt eine Liste der letzten fünf abgegebenen Kommentare. Nutze ich in der footer.php.

[php]
//Abfrage
<?php $comments = $wpdb->get_results("SELECT comment_post_ID, comment_author, comment_author_email, comment_content, comment_date, DATE_FORMAT(comment_date,’%d.%m.%Y um %H:%i‘) AS new_comment_date
FROM $wpdb->comments
WHERE comment_type = “
&& comment_approved = ‚1‘
ORDER BY comment_date
DESC LIMIT 5"); ?>
//Ausgabe
<?php foreach($comments as $comment) {
$post = get_postdata($comment->comment_post_ID); ?>
<li>
<?php echo $comment->comment_author; ?> hat am <?php echo $comment->new_comment_date; ?> den Artikel
<a href="<?php echo get_permalink($post[‚ID‘]); ?>" title="<?php echo $post[‚Title‘]; ?>">
<?php echo $post[‚Title‘]; ?></a> kommentiert
</li>
<?php
}
?>
[/php]

Tag Cloud für Kategorien

Kein Blog ohne Tag Cloud. Aber die Tag Cloud kann nicht nur Tags anzeigen.

[php]
<?php
wp_tag_cloud( array( ‚taxonomy‘ => ‚category‘ ) );
?>
[/php]

Gibt die Tag Cloud ausschließlich mit Kategorien aus.

[php]
<?php
$args = array(
‚taxonomy‘ => array(‚post_tag‘,’category‘),
);
wp_tag_cloud($args);
?>
[/php]

Stellt die Tag Cloud mit Tags und Kategorien dar.

1 Kommentar

  1. Frater Tecum sagt:

    Besten Dank!

    Ich finde solche Lösungen immer wesentlich Besser, als irgendwelche Plugins installieren zu müssen, die dann noch Gott wer weiss was machen.

    Ich habe diese Seite gefunden, da ich schon länger finden mag, wie ich ein rel=“tag“ in die Tagcloud einfüge. Hat ja aus Sicht des SEO Sinn. Dann sehe ich noch deine weiteren Codebeispiele…

    Absolut wunderschön – da kann ich ein bisheriges Plugin deinstallieren und ein zukünftiges werde ich nicht brauchen. Besten Dank und weiter so! Das hilft sicher nicht nur mir.

Dein Kommentar zu diesem Artikel