中名软件园:打造绿色软件,免费软件下载基地!

软件分类|下载排行|最近更新

当前位置:首页软件教程其他综合相关 → WordPress主题制作全过程(十):制作comments.php

WordPress主题制作全过程(十):制作comments.php

时间:2023-02-21 15:00:58人气:作者:网友整理我要评论

前面给大家介绍了《WordPress主题制作全过程(九):制作single.php》,本文继续给大家介绍如何制作comments.php,下面一起来看一下吧~

今天我们来制作评论主题的评论模块。在主题目录Aurelius下新建comments.php,在single.php剪切以下代码,粘贴到comments.php:

<!– Comment’s List –>
<h3>Comments</h3>
<div class="hr dotted clearfix"> </div>
<ol class="commentlist">
    <li class="comment">
        <div class="gravatar"> <img alt="" src='images/gravatar.png' height='48' width='48' /> <a class="comment-reply-link" href="">Reply</a> </div>
        <div class="comment_content">
            <div class="clearfix"> 
                <cite class="author_name"><a href="">Joe Bloggs</a></cite>
                <div class="comment-meta commentmetadata">January 6, 2010 at 6:26 am</div>
            </div>
            <div class="comment_text">
                <p>Donec leo. Aliquam risus elit, luctus vel, interdum vitae, malesuada eget, elit. Nulla vitae ipsum. Donec ligula ante, bibendum sit amet, elementum quis, viverra eu, ante. Fusce tincidunt. Mauris pellentesque, arcu eget feugiat accumsan, ipsum mi molestie orci, ut pulvinar sapien lorem nec dui.</p>
            </div>
        </div>
    </li>
</ol>
<div class="hr clearfix"> </div>
<!– Comment Form –>
<form id="comment_form" action="" method="post">
    <h3>Add a comment</h3>
    <div class="hr dotted clearfix"> </div>
    <ul>
        <li class="clearfix">
            <label for="name">Your Name</label>
            <input id="name" name="name" type="text" />
        </li>
        <li class="clearfix">
            <label for="email">Your Email</label>
            <input id="email" name="email" type="text" />
        </li>
        <li class="clearfix">
            <label for="email">Your Website</label>
            <input id="website" name="website" type="text" />
        </li>
        <li class="clearfix">
            <label for="message">Comment</label>
            <textarea id="message" name="message" rows="3" cols="40"></textarea>
        </li>
        <li class="clearfix">
            <!– Add Comment Button –>
            <a type="submit" class="button medium black right">Add comment</a> 
        </li>
    </ul>
</form>

在single.php原位置添加代码:

<?php comments_template(); ?>

以上语句的作用就是将comments.php里的所有内容导入到single.php中,与直接在single.php写comments.php中的代码效果是一样的。

为了安全起见,不让恶意用户直接打开评论文件,请在comments.php头部添加以下代码:

<?php
if (isset($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
die ('Please do not load this page directly. Thanks!');
?>

因为WordPress的输出评论函数wp_list_comments()输出的评论代码与我们主题的评论代码不一样的,我们得自定义我们的评论列表,将comments.php中的以下代码删除(以下代码用于列出文章的所有评论):

<li class="comment">
    <div class="gravatar"> <img alt="" src="images/gravatar.png" height="48" width="48" /> <a class="comment-reply-link" href="">Reply</a> </div>
    <div class="comment_content">
        <div class="clearfix">
            <cite class="author_name"><a href="">Joe Bloggs</a></cite>
            <div class="comment-meta commentmetadata">January 6, 2010 at 6:26 am</div>
        </div>
        <div class="comment_text">
            <p>Donec leo. Aliquam risus elit, luctus vel, interdum vitae, malesuada eget, elit. Nulla vitae ipsum. Donec ligula ante, bibendum sit amet, elementum quis, viverra eu, ante. Fusce tincidunt. Mauris pellentesque, arcu eget feugiat accumsan, ipsum mi molestie orci, ut pulvinar sapien lorem nec dui.</p>
        </div>
    </div>
</li>

改成:

<?php 
if (!empty($post->post_password) && $_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { 
    // if there's a password
    // and it doesn't match the cookie
?>
<li class="decmt-box">
    <p><a href="#addcomment">请输入密码再查看评论内容.</a></p>
</li>
<?php 
    } else if ( !comments_open() ) {
?>
<li class="decmt-box">
    <p><a href="#addcomment">评论功能已经关闭!</a></p>
</li>
<?php 
    } else if ( !have_comments() ) { 
?>
<li class="decmt-box">
    <p><a href="#addcomment">还没有任何评论,你来说两句吧</a></p>
</li>
<?php 
    } else {
        wp_list_comments('type=comment&callback=aurelius_comment');
    }
?>

以上代码的意思大致也可以看得出来了,就是一大堆 如果...就....,如果以上条件都不满足就列出所有评论。现在将主题文件夹Aurelius中的functions.php中的 ?> ,改成以下代码,如果你之前从本博客下载到的functions.php已经有以下代码则不用再添加:

function aurelius_comment($comment, $args, $depth) 
{
   $GLOBALS['comment'] = $comment; ?>
   <li class="comment" id="li-comment-<?php comment_ID(); ?>">
<div class="gravatar"> <?php if (function_exists('get_avatar') && get_option('show_avatars')) { echo get_avatar($comment, 48); } ?>
 <?php comment_reply_link(array_merge( $args, array('reply_text' => '回复','depth' => $depth, 'max_depth' => $args['max_depth']))) ?> </div>
<div class="comment_content" id="comment-<?php comment_ID(); ?>">
<div class="clearfix">
<?php printf(__('<cite class="author_name">%s</cite>'), get_comment_author_link()); ?>
<div class="comment-meta commentmetadata">发表于:<?php echo get_comment_time('Y-m-d H:i'); ?></div>
   <?php edit_comment_link('修改'); ?>
</div>
<div class="comment_text">
<?php if ($comment->comment_approved == '0') : ?>
<em>你的评论正在审核,稍后会显示出来!</em><br />
      <?php endif; ?>
      <?php comment_text(); ?>
</div>
</div>
<?php } ?>

以上代码所用到的WordPress函数及相应的说明:


函数名称函数功能
get_avatar($comment, 48)获取评论者的gravatar头像,尺寸为48 * 48
comment_reply_link()回复留言的链接
get_comment_author_link用于获取评论者博客地址
get_comment_time获取评论发布时间
edit_comment_link管理员修改评论的链接
comment_text()输出评论内容


好,现在在你的文章页面底部就可以正常地显示评论了!现在我们继续来制作提交评论的表单,将以下代码删除(也就是评论表单的代码):

<!– Comment Form –>
<form id="comment_form" action="" method="post">
    <h3>Add a comment</h3>
    <div class="hr dotted clearfix"> </div>
    <ul>
        <li class="clearfix">
            <label for="name">Your Name</label>
            <input id="name" name="name" type="text" />
        </li>
        <li class="clearfix">
            <label for="email">Your Email</label>
            <input id="email" name="email" type="text" />
        </li>
        <li class="clearfix">
            <label for="email">Your Website</label>
            <input id="website" name="website" type="text" />
        </li>
        <li class="clearfix">
            <label for="message">Comment</label>
            <textarea id="message" name="message" rows="3" cols="40"></textarea>
        </li>
        <li class="clearfix">
            <!– Add Comment Button –>
            <a type="submit" class="button medium black right">Add comment</a>
        </li>
    </ul>
</form>

改成:

<?php 
if ( !comments_open() ) :
// If registration required and not logged in.
elseif ( get_option('comment_registration') && !is_user_logged_in() ) : 
?>
<p>你必须 <a href="<?php echo wp_login_url( get_permalink() ); ?>">登录</a> 才能发表评论.</p>
<?php else  : ?>
<!-- Comment Form -->
<form id="commentform" name="commentform" action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post">
    <h3>发表评论</h3>
    <div class="hr dotted clearfix"> </div>
    <ul>
        <?php if ( !is_user_logged_in() ) : ?>
        <li class="clearfix">
            <label for="name">昵称</label>
            <input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="23" tabindex="1" />
        </li>
        <li class="clearfix">
            <label for="email">电子邮件</label>
            <input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="23" tabindex="2" />
        </li>
        <li class="clearfix">
            <label for="email">网址(选填)</label>
            <input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="23" tabindex="3" />
        </li>
        <?php else : ?>
        <li class="clearfix">您已登录:<a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="退出登录">退出 »</a></li>
        <?php endif; ?>
        <li class="clearfix">
            <label for="message">评论内容</label>
            <textarea id="message comment" name="comment" tabindex="4" rows="3" cols="40"></textarea>
        </li>
        <li class="clearfix">
            <!-- Add Comment Button -->
            <a href="javascript:void(0);" onClick="Javascript:document.forms['commentform'].submit()" class="button medium black right">发表评论</a> </li>
    </ul>
    <?php comment_id_fields(); ?>
    <?php do_action('comment_form', $post->ID); ?>
</form>
<?php endif; ?>


函数名称函数功能
is_user_logged_in判断用户是否登录
wp_login_url博客登录地址
get_comment_author_link用于获取评论者博客地址
$comment_author读取cookie,如果该用户之前已经发表过评论则自动帮助用户填写用户名
$comment_author_email读取cookie,如果该用户之前已经发表过评论则自动帮助用户填写Email
$comment_author_url读取cookie,如果该用户之前已经发表过评论则自动帮助用户填写博客地址
do_action('comment_form', $post->ID);该函数为某些插件预留
wp_logout_url退出登录的链接


WordPress主题制作全过程完整列表:

WordPress主题制作全过程(一):基础准备

WordPress主题制作全过程(二):主题文件构成

WordPress主题制作全过程(三):HTML静态模板制作

WordPress主题制作全过程(四):小试牛刀

WordPress主题制作全过程(五):制作header.php

WordPress主题制作全过程(六):制作footer.php

WordPress主题制作全过程(七):制作sidebar.php

WordPress主题制作全过程(八):制作index.php

WordPress主题制作全过程(九):制作single.php

WordPress主题制作全过程(十):制作comments.php

WordPress主题制作全过程(十一):制作page.php



相关文章

  • 精仿茶杯狐影视跳转系统源码

    精仿茶杯狐影视跳转系统源码,独立后台,可修改,可定制,灵活性强,PC端,手机端自适应,目前版本为7.2最新版,本源码采用了E-CDN加速技术,imageszip技术,XML高速接口技术,H-Speed解析加速技术等,大大的提高了站点运行速度..
  • 简单个人信息表单模版代码

    一款简单个人信息表单模版代码,绿色清新风格,响应式页面设计,多功能模块满足日常需求,适用于任意类型的网站中。..

推荐文章

关于中名 | 联系方式 | 发展历程 | 版权声明 | 下载帮助(?) | 广告联系 | 网站地图 | 友情链接

Copyright © 2021 WWW.FEELCN.NET 中名软件园 版权所有

声明: 本站非腾讯QQ官方网站 所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告