WordPress 最新评论与您的足迹二体合一

之前写过一篇《最新、热评、随机日志函数三体合一》的文章,就是把 WordPress 中最新文章、热评文章、随机文章这三个功能不同但函数相近的函数合并在一起写,然后通过不同的参数调用实现这三个功能。这样做的优点是可以精简冗长、多余、重复的代码,方便今后维护和管理,可以做到以一敌三的,个人认为这是一个很好的思路,值得拓展一下。

我先自我拓展一下,把 WordPress 最新评论和“您的足迹”功能进行合体,因为在介绍《WordPress 实现“您的足迹”功能》一文中我就提到过“您的足迹”的原理其实和最新评论是相对的,方法也是相近的,那何不把这两者也合并在一起呢?方法如下:

在 WordPress 主题文件中的 functions.php 中添加代码如下:

function recent_comments( $commentauthor='' ){
    global $wpdb;
    $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved,comment_author_email, comment_type,comment_author_url, SUBSTRING(comment_content,1,25) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND comment_author $commentauthor AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10";
    $comments = $wpdb->get_results($sql);
    foreach ( $comments as $comment ) {
        $output .= "\n<li><a href=\"" . get_permalink($comment->ID) . "#comment-" . $comment->comment_ID . "\" title=\"" . $comment->post_title . " 上的评论\">". strip_tags($comment->comment_author) .": ". strip_tags($comment->com_excerpt) ."</a></li>";
    }
    echo $output;
}

接下去是分别调用最新评论和“您的足迹”的代码,先来看看最新评论:

<?php recent_comments( '!="万戈"' );?>

这里的参数意思就是排除管理员自己的评论,当然,这里的万戈要改成你自己的昵称咯。接下来再看看如何调用“您的足迹”:

<?php
if($_COOKIE["comment_author_" . COOKIEHASH]!=""){
    echo '<div class="widget"><h3>您的足迹</h3><ul>';
    recent_comments( '="'.$_COOKIE["comment_author_" . COOKIEHASH].'"' );
    echo '</ul></div>';
}
?>

这里调用的参数就是先判断来访者有没有评论过的 Cookies,如果有则显示您的足迹。

这也只是一个思路的举例,还有更多值得举一反三的,把一些常用的类似的函数合并,这将大大有效地提高对代码的管理,不知道你还有什么更好的想法和思路没?