WordPress 创建新评论读者自动排第一栏目

2019-06-1600:28:55 9 223 人看过

这个功能挺好玩的,也是我很久以前就想实现的一个功能。当时由于缺乏合适的 CSS 的样式,一直搁置到现在。这个功能可以根据 SQL 查询语句,自动读取数据库中最新评论读者的昵称和网址,并自动显示在该栏目的第一位。虽然是很单一的一个功能,但是对鼓励读者互动特别是站长之间的交流互动还是起到非常大的作用。实现效果:

WordPress 创建新评论读者自动排第一栏目

当然,网上有很多这方面的教程,但普遍缺乏合适的 CSS 样式表,可操作性不是很强。今天这个教程也是在前人的基础上做了小幅度的修改而实现的效果,现在简单介绍一下实现的过程。

一、添加栏目功能

复制代码到 functions.php 文件,为 WordPress 添加新评论读者自动排第一的功能。

//最新评论排第一
function jiub($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><i class=\"fa fa-spinner fa-pulse\"></i><a target=\"_blank\" href=\"".$commentaf->comment_author_url."\">".$commentaf->comment_author."</a></li>";
        $outputy .= $tmpy;
    }
    $outputy = "<ul>".$outputy."</ul>";
    echo $outputy ;
}

二、栏目添加 CSS 样式

打开主题目录下的 CMS 文件夹,找到名为“cms-news.php”的 PHP 文件,如果你使用的 begin 主题和我的是同一版本(LTS 版本),代码应该如下所示:

<!-- 最新文章 -->
<?php if (zm_get_option('news')) { ?>
<div class="cms-news sort" name="<?php echo zm_get_option('news_s'); ?>">
    <?php 
    if (!zm_get_option('news_model') || (zm_get_option("news_model") == 'news_grid')) {
        // 标准模式
        require get_template_directory() . '/cms/cms-news-grid.php';
    }
    if (zm_get_option('news_model') == 'news_normal') {
        // 图文模式
        require get_template_directory() . '/cms/cms-news-normal.php';
    }
    ?>
</div>
<?php } ?>

然后将下面的 CSS 样式代码放置到<!-- 最新文章 -->的上方即可。

<!--评论自动排第一-->
<style>
.jiub {width:100%;margin-bottom:10px;height:auto!important;background:#fff;border:2px solid #dddddd;text-align:left;color:#123456;
border:1px solid #eaeaea;border-radius:4px;}
.jiub p{padding-top:10px;padding-bottom:10px;padding-left:3%;font-size:16px;border:1px solid #dddddd;background:#f8f8f8}
.jiub ul{margin-top:10px;margin-bottom:10px;font-size:13px;padding-bottom:40px;margin-left:3%;}
.jiub ul li{list-style:none;float:left;margin-left:0px;margin-bottom:10px;width:16%;overflow:hidden;height:24px;text-align:left;}
.jiub ul li img{width:20px;height:20px;margin-left:2px;margin-right:2px;}
@media (max-width:820px) {.jiub{display:none}}
@media (max-width:820px) {
 .jiub ul li{width:25%;font-size:12px;}
 .jiub p{padding-top:4px;font-size:16px;}
 }
  .jiub i{
  color:#000000;
    margin-right:6px;
  }
</style>
<div class="jiub">
<p>新评论的读者将排在本栏目第一位</p>
    <?php jiub(18); ?>
  <div style="clear: both;display:block"> </div>
</div>

其中,修改<?php jiub(18); ?>代码中的 18,可以修改你想要显示的读者数量,建议为 6 的倍数。
其中,代码中 49 行的@media (max-width:820px) {.jiub{display:none}}设置了屏幕宽度小于 820px,则不显示这个栏目。如果你想手机端也显示这个栏目,可以把这一行的代码注释掉。
至此,评论自动排第一的功能就被放置到最近更新文章的上方。当然,放到其他位置也是可以的,但是建议放在网站首页的视觉中心,才能得到更好的曝光效果,发挥它该有的作用。

2019/06/18 补充内容

上面提到的是 begin 主题杂志布局下的代码部署,考虑到很多朋友时使用博客布局的,那么博客布局应该怎么怎么部署才能正常显示呢?
博客布局下的代码部署和杂志布局的方法是一致的,只是第二步中代码放置的文件有所不同。杂志布局是放置到主题目录 CMS 文件夹中的 cms-news.php 中。博客布局时放置到主题目录 template 文件夹的 blog.php 文件中。
首先找到以下代码(大概是 1-13 行),将代码放置到后面即可。

<?php get_header(); ?>

    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">
            <?php if (zm_get_option('order_by')) {  begin_orderby(); }?>
            <?php if (zm_get_option('slider')) { ?>
                <?php
                    if ( !is_paged() ) :
                        get_template_part( 'template/slider' );
                    endif;
                ?>
            <?php } ?>
weinxin
博客小程序【一起行动派】
欢迎访问行动派博客小程序,小程序和博客同步更新,查看内容更加方便!
Action

发表评论

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

目前评论:9   其中:访客  5   博主  4

    • avatar 鲁班七号 0

      这是一条邮箱回复提醒测试评论……

      • avatar wordpress建站吧 4

        想把它开发成一个插件,似乎并不好实现

        • avatar 张波博客 4

          我以为你换主题了呢,我也找鸟哥升级主题去!

            • avatar Action Admin

              @张波博客 没有换,只是改了一下布局和样式。

            • avatar boke112导航 4

              多这个栏目,可以用评论者多一个展示的机会,挺好的

                • avatar Action Admin

                  @boke112导航 对呀,这是很久以前想实现的一个功能,如今终于如愿以偿。

                • avatar 闲鱼 1

                  :lol: 还是能吸引不少人评论的