WordPress博客实现最新评论自动排第一功能

  • A+
所属分类:WordPress 建站经验

WordPress实现新评论自动排第一功能,通过调取博客评论用户的网站名称和网址,去重,按照评论时间的先后顺序排列,最新带网站网址的评论排在第一位(评论者不填写网站网址则不显示),效果如下:(也可以在本站查看效果)

WordPress博客实现最新评论自动排第一功能

最新评论排第一实现方法

1、添加以下代码到主题的functions.php文件最后一个%>前

//最新评论排第一
function Autofirst($af){
    global $wpdb;
    $queryaf="select comment_author, comment_author_url, comment_date from $wpdb->comments where comment_ID in (select max(comment_ID) from $wpdb->comments where comment_approved='1' and comment_author_url !='' and user_id='0'  GROUP BY comment_author_email)  ORDER BY comment_date DESC LIMIT $af";
    $wally = $wpdb->get_results($queryaf);
    foreach ($wally as $commentaf){
        $tmpy= "<li><a target=\"_blank\" href=\"".$commentaf->comment_author_url."\">".$commentaf->comment_author."</a></li>";
        $outputy .= $tmpy;
    }
    $outputy = "<ul>".$outputy."</ul>";
    echo $outputy ;
}

以上代码无需修改,直接复制粘贴即可。输出的样式可以自定义,只需在以上代码中的<ul>中添加 class 属性即可。

2、将以下代码放到需要显示此功能的地方

<?php Autofirst(14);?>

其中 14 表示最多显示14个有效评论者,这个数值可以自定义,但是一定不能为空,要不然会出错,至少大于0以上。

3、添加代码到侧边栏并添加样式(仅适用知更鸟主题)

如果不想折腾代码,可以直接添加小工具解决。在仪表盘 - 外观 - 小工具,在主题侧边栏版块添加一个【增强文本】工具,按照下图填写参数(xoxo blogroll widget_links)保存即可。

WordPress博客实现最新评论自动排第一功能

 

此时,Wordpress博客侧边栏最新评论自动排第一功能就实现了,赶紧试试吧。

 

其他功能

  • 知名博客模块

显示一定时期内在本站留言比较活跃的用户网站。

  1. <?php top_comment_authors(24); ?>

注意:本模块仅适用于知更鸟Begin主题,括号里面的数字为显示数量,你可以按需修改。

  • 人气博客

显示一定时期内在本站留言数最多的用户网站。

  1. <?php top_comments(24); ?>

注意:本模块仅适用于知更鸟Begin主题,括号里面的数字为显示数量,你可以按需修改。

  • 边栏

调用主题边栏,在后台小工具中添加你想要显示的内容。

PS:

1、如果你正在使用知更鸟Begin主题,以上代码全部适用,非知更鸟Begin主题,通过本教程你只能实现最近访客访客自动排名第一功能。

2、各位在使用的时候,会发现知名博客和人气博客显示的内容与本站有些诧异,如果你希望和本站显示的一样,你可以找到/wp-content/themes/begin/inc/inc.php文件,将约2013至1268行代码替换成以下代码。

展开

// 读者排行
function top_comment_authors($amount = 98) {
    global $wpdb;
        $prepared_statement = $wpdb->prepare(
        'SELECT
        COUNT(comment_author) AS comments_count, comment_author, comment_author_url, comment_author_email, MAX( comment_date ) as last_commented_date
        FROM '.$wpdb->comments.'
        WHERE comment_author != "" AND comment_type = "" AND comment_approved = 1  AND user_id = ""
        GROUP BY comment_author
        ORDER BY comments_count DESC, comment_author ASC
        LIMIT %d',
        $amount);
    $results = $wpdb->get_results($prepared_statement);
    $output = '<div class="top-comments">';
    foreach($results as $result) {
        $c_url = $result->comment_author_url;
        $output .= '
        <div class="lx8">
            <div class="top-author">
                <div class="top-comment"><a href="' . get_template_directory_uri()."/inc/go.php?url=". $c_url . '" target="_blank" rel="external nofollow"><div class="author-url"><strong> ' . $result->comment_author . '</div></strong></a></div>
                <div class="top-comment">' . human_time_diff(strtotime($result->last_commented_date)) . '前来过</div>
            </div>
        </div>';
    }
    $output .= '<div class="clear"></div></div>';
    echo $output;
}


function top_comments($number = 98) {
    global $wpdb;
    $counts = wp_cache_get( 'mostactive' );
    if ( false === $counts ) {
        $counts = $wpdb->get_results("SELECT COUNT(comment_author) AS cnt, comment_author, comment_author_url, comment_author_email
        FROM {$wpdb->prefix}comments
        WHERE comment_date > date_sub( NOW(), INTERVAL 90 DAY )
        AND comment_approved = '1'
        AND comment_author_email != 'example@example.com'
        AND comment_author_email != ''
        AND comment_author_url != ''
        AND comment_type = ''
        AND user_id = '0'
        GROUP BY comment_author_email
        ORDER BY cnt DESC
        LIMIT $number");
    }
    $mostactive =  '<div class="top-comments">';
    if ( $counts ) {
        wp_cache_set( 'mostactive', $counts );
        foreach ($counts as $count) {
            $c_url = $count->comment_author_url;
            $mostactive .= '
            <div class="lx8">
                <div class="top-author">
                    <div class="top-comment"><a href="' . get_template_directory_uri()."/inc/go.php?url=". $c_url . '" target="_blank" rel="external nofollow"><div class="author-url"><strong> ' . $count->comment_author . '</div></strong></a></div>
                    <div class="top-comment">留下'.$count->cnt.'个脚印</div>
                </div>
            </div>';
        }
        $mostactive .= '<div class="clear"></div></div>';
        echo $mostactive;
    }
}
if (zm_get_option('meta_delete')) {} else {require get_template_directory() . '/inc/meta-delete.php';}
require get_template_directory() . '/inc/meta-boxes.php';
require get_template_directory() . '/inc/show-meta.php';

然后使用以下CSS文件:

展开

.favorites-top{
    margin-top:10px;
}
.breadcrumb,
.yheader{
    display:none;
}
#primary {
    float: left;
}
#sidebar {
    float: rightright;
}
.top-comments {
    margin: -5px 0 0 0;
}

.top-comments img {
    float: left;
    height: auto;
    max-width: 100%;
    width: auto;
}

.top-comments .lx8 {
    float: left;
    min-height: 1px;
    width: 16.6666666666666%;
    padding: 2px;
}

.top-author {
    background: #fff;
    margin: 5px;
    padding: 0 0 10px 0;
    border: 1px solid #ddd;
}

.top-comment {
    color: #999;
    text-align: center;
}

.author-url {
    width: 100%;
    padding: 5px;
    overflow: hidden;
    text-overflow: ellipsis;
    whitewhite-space: nowrap;
}

.comment-authors {
    padding: 0 10px;
}
.dh_title{
    background: #fff;
    margin: 0 0 10px 0;
    padding: 10px;
    border: 1px solid #ddd;
    box-shadow: 0 0 1px rgba(0,0,0,.04);
    border-radius: 2px;
}
.dh_title h3{
    font-size: 18px;
    margin-left:10px;
}
.dh_title .dh_blog{
    margin:10px 0;
}
.dh_title .dh_more{
    position: absolute;
    top: 5px;
    rightright: 20px;
}
}
article{
    background:#fff;
}
#sites-widget-one h3 {
    font-size: 18px;
    background: #fff;
    width: 100%;
    height: 30px;
    line-height: 40px;
    padding: 0 20px;
    border-bottom: 0px solid #ddd;
}
.widget ul{
    width: 100%;
}
.widget_links li{
    float: left;
    width: 20% !important;
    border:0px;
}
.widget_links a{
    border: 1px solid #fff;

懒人福利

如果你和我一样,比较懒惰,你可以新建一个PHP页面文件,加入以下代码,将文件上传至/wp-content/themes/begin/pages/,然后在后台,新建页面,模板选择博客导航即可。

展开

<?php
/*
Template Name: 博客导航
*/
if ( ! defined( 'ABSPATH' ) ) { exit; }
?>
<?php get_header(); ?>
<link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/css/sites.css" />

<style type="text/css">
.favorites-top{
    margin-top:10px;
}
.breadcrumb,
.yheader{
    display:none;
}
#primary {
    float: left;
}
#sidebar {
    float: right;
}
</style>
<style type="text/css">

.top-comments {
    margin: -5px 0 0 0;
}

.top-comments img {
    float: left;
    height: auto;
    max-width: 100%;
    width: auto;
}

.top-comments .lx8 {
    float: left;
    min-height: 1px;
    width: 16.6666666666666%;
    padding: 2px;
}

.top-author {
    background: #fff;
    margin: 5px;
    padding: 0 0 10px 0;
    border: 1px solid #ddd;
}

.top-comment {
    color: #999;
    text-align: center;
}

.author-url {
    width: 100%;
    padding: 5px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.comment-authors {
    padding: 0 10px;
}
.dh_title{
    background: #fff;
    margin: 0 0 10px 0;
    padding: 10px;
    border: 1px solid #ddd;
    box-shadow: 0 0 1px rgba(0,0,0,.04);
    border-radius: 2px;
}
.dh_title h3{
    font-size: 18px;
    margin-left:10px;
}
.dh_title .dh_blog{
    margin:10px 0;
}
.dh_title .dh_more{
    position: absolute;
    top: 5px;
    right: 20px;
}
}
article{
    background:#fff;
}
#sites-widget-one h3 {
    font-size: 18px;
    background: #fff;
    width: 100%;
    height: 30px;
    line-height: 40px;
    padding: 0 20px;
    border-bottom: 0px solid #ddd;
}
.widget ul{
    width: 100%;
}
.widget_links li{
    float: left;
    width: 20% !important;
    border:0px;
}
.widget_links a{
    border: 1px solid #fff;
</style>
<div class="favorites-top">
    <div class="top-date rili">
        <?php the_title( '<h1 class="favorites-title">', '</h1>' ); ?>
        <span id=localtime></span>
        <script type="text/javascript">
        function showLocale(objD){
            var str,colorhead,colorfoot;
            var yy = objD.getYear();
            if(yy<1900) yy = yy+1900;
            var MM = objD.getMonth()+1;
            if(MM<10) MM = '0' + MM;
            var dd = objD.getDate();
            if(dd<10) dd = '0' + dd;
            var hh = objD.getHours();
            if(hh<10) hh = '0' + hh;
            var mm = objD.getMinutes();
            if(mm<10) mm = '0' + mm;
            var ss = objD.getSeconds();
            if(ss<10) ss = '0' + ss;
            var ww = objD.getDay();
            if  ( ww==0 )  colorhead="<font color=\"#FF0000\">";
            if  ( ww > 0 && ww < 6 )  colorhead="<font color=\"#373737\">";
            if  ( ww==6 )  colorhead="<font color=\"#008000\">";
            if  (ww==0)  ww="星期日";
            if  (ww==1)  ww="星期一";
            if  (ww==2)  ww="星期二";
            if  (ww==3)  ww="星期三";
            if  (ww==4)  ww="星期四";
            if  (ww==5)  ww="星期五";
            if  (ww==6)  ww="星期六";
            colorfoot="</font>"
            str = colorhead + yy + "年" + MM + "月" + dd + "日 " + hh + ":" + mm + ":" + ss + "  " + ww + colorfoot;
            return(str);
        }
        function tick()
        {
            var today;
            today = new Date();
            document.getElementById("localtime").innerHTML = showLocale(today);
            window.setTimeout("tick()", 1000);
        }
        tick();
        </script>
    </div>

    <div class="tianqi rili">
        <iframe allowtransparency="true" frameborder="0" width="385" height="75" scrolling="no" src="//tianqi.2345.com/plugin/widget/index.htm?s=1&z=1&t=0&v=0&d=3&bd=0&k=&f=&q=1&e=1&a=1&c=54511&w=385&h=96&align=left"></iframe>
    </div>
    <div class="clear"></div>
</div>
<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">
        <div class="dh_pc">
            <p>每当在本站评论时填写网址,贵站将自动排在第一位</p>
            <span class="dh_more"><a rel="external nofollow" target="_blank" href="https://www.eklkg.cn/wp-content/themes/begin/go.php?url=aHR0cHM6Ly9saXh1ZWppYW5nLmNvbS9mYW5na2U=">more</a></span>
            <?php Autofirst(25);?>
        </div>
        <article class="dh_title">
            <h3>知名博客</h3>
            <div class="clear"></div>
                <?php top_comment_authors(24); ?>
        </article>
        <article class="dh_title">
            <h3>人气博客</h3>
            <div class="clear"></div>
            <div class="dh_blog">
                <?php top_comments(24); ?>
            </div>
        </article>
        <!-- 网址小工具 -->
        <div id="sites-widget-one" class="sites-widget">
            <?php dynamic_sidebar( 'favorites-one' ); ?>
            <div class="clear"></div>
        </div>
        <!-- 全部网址分类 -->
        <?php
        $taxonomy = 'favorites';
        $terms = get_terms($taxonomy); foreach ($terms as $cat) {
        $catid = $cat->term_id;
        $args = array(
            'showposts' => 100,
            'meta_key' => 'sites_order',
            'orderby' => 'meta_value',
            'order' => 'date',
            'tax_query' => array( array( 'taxonomy' => $taxonomy, 'terms' => $catid, 'include_children' => false ) )
        );
        $query = new WP_Query($args);
        if( $query->have_posts() ) { ?>
        <article class="dh_title" data-wow-delay="0.3s">
            <h3><?php echo $cat->name; ?></h3>
            <div class="dh_blog">
                <div class="sites-5">
                    <?php while ($query->have_posts()) : $query->the_post();?>
                        <?php if ( get_post_meta($post->ID, 'sites_img_link', true) ) { ?>
                            <?php $sites_img_link = sites_nofollow(get_post_meta($post->ID, 'sites_img_link', true)); ?>
                            <span class="sites-title wow fadeInUp" data-wow-delay="0s">
                                <figure class="picture-img sites-img"><?php if (zm_get_option('lazy_s')) { zm_sites_thumbnail_h(); } else { zm_sites_thumbnail(); } ?></figure>
                                <a href="<?php echo $sites_img_link ?>" target="_blank" rel="external nofollow"><?php the_title(); ?></a>
                            </span>
                        <?php } else { ?>
                            <?php $sites_link = sites_nofollow(get_post_meta($post->ID, 'sites_link', true)); ?>
                            <span class="sites-title wow fadeInUp" data-wow-delay="0s"><a href="<?php echo $sites_link ?>" target="_blank" rel="external nofollow"><?php the_title(); ?></a></span>
                        <?php } ?>
                    <?php endwhile; ?>
                    <div class="clear"></div>
                </div>
            </div>
        </article>
        <?php } wp_reset_query(); ?>
        <?php } ?>

        <!-- 备用
        <article class="sites sites-cat">
            <div class="sites-cats">
                <span class="sites-cat">分类名称</span>
                <span class="sites-more"><a href="文字替换为网址分类链接地址">更多</a>
            </div>
            <div class="sites-link">
                <ul class="sites-5">
                    <?php
                        $args = array('tax_query' => array( array('taxonomy' => 'favorites', 'field' => 'id', 'terms' => explode(',',830 ))), 'posts_per_page' => 100);
                        query_posts($args); while ( have_posts() ) : the_post();
                    ?>
                    <?php if ( get_post_meta($post->ID, 'sites_link', true) ) { ?>
                    <?php $sites_link = get_post_meta($post->ID, 'sites_link', true); ?>
                        <li class="sites-title"><a href="<?php echo $sites_link ?>" target="_blank" rel="external nofollow"><?php the_title(); ?></a></li>
                    <?php } else { ?>
                        <?php the_title( sprintf( '<li class="sites-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></li>' ); ?>
                    <?php } ?>

                    <?php endwhile; ?>
                    <?php wp_reset_query(); ?>
                    <div class="clear"></div>
                </ul>
            </div>
        </article>
         -->

    </main>
</div>

<div id="sidebar" class="widget-area">
    <div class="wow fadeInUp" data-wow-delay="0.5s">
        <?php if ( ! dynamic_sidebar( 'favorites' ) ) : ?>
            <aside id="add-widgets" class="widget widget_text">
                <h3 class="widget-title"><i class="be be-warning"></i>添加小工具</h3>
                <div class="textwidget">
                    <a href="<?php echo admin_url(); ?>widgets.php" target="_blank">为“网址侧边栏”添加小工具</a>
                </div>
                <div class="clear"></div>
            </aside>
        <?php endif; ?>
    </div>
</div>

<?php get_footer(); ?>

注意,本代码仍然只适用于知更鸟Begin主题。

Typecho版本传送门:https://www.eklkg.cn/236.html

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: