首页| 站长资讯| 读书心得| 娱乐资讯| 电商资讯| 服装服饰| 面试技巧| 航空资讯| 求职招聘| 化工资讯| 戏剧歌舞| 家居生活| 旅游资讯| 更多

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

【发表时间:2020-09-02 15:48:09 来源:鸿发网】

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

  1. <!–Comment’sList–> <h3>Comments</h3>
  2. <divclass="hrdottedclearfix">&nbsp;</div> <olclass="commentlist">
  3. <liclass="comment"> <divclass="gravatar"><imgalt=""src=’images/gravatar.png’height=’48′width=’48′/><aclass="comment-reply-link"href=&quot;>Reply</a></div>
  4. <divclass="comment_content"> <divclass="clearfix"><citeclass="author_name"><ahref="">JoeBloggs</a></cite>
  5. <divclass="comment-metacommentmetadata">January6,2010at6:26am</div> </div>
  6. <divclass="comment_text"> <p>Donecleo.Aliquamrisuselit,luctusvel,interdumvitae,malesuadaeget,elit.Nullavitaeipsum.Donecligulaante,bibendumsitamet,elementumquis,viverraeu,ante.Fuscetincidunt.Maurispellentesque,arcuegetfeugiataccumsan,ipsummimolestieorci,utpulvinarsapienloremnecdui.</p>
  7. </div> </div>
  8. </li> </ol>
  9. <divclass="hrclearfix">&nbsp;</div> <!–CommentForm–>
  10. <formid="comment_form"action=""method="post"> <h3>Addacomment</h3>
  11. <divclass="hrdottedclearfix">&nbsp;</div> <ul>
  12. <liclass="clearfix"> <labelfor="name">YourName</label>
  13. <inputid="name"name="name"type="text"/> </li>
  14. <liclass="clearfix"> <labelfor="email">YourEmail</label>
  15. <inputid="email"name="email"type="text"/> </li>
  16. <liclass="clearfix"> <labelfor="email">YourWebsite</label>
  17. <inputid="website"name="website"type="text"/> </li>
  18. <liclass="clearfix"> <labelfor="message">Comment</label>
  19. <textareaid="message"name="message"rows="3"cols="40"></textarea> </li>
  20. <liclass="clearfix"> <!–AddCommentButton–>
  21. <atype="submit"class="buttonmediumblackright">Addcomment</a></li> </ul>
  22. </form>

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

  1. <?phpcomments_template();?>

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

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

  1. <?php if(isset($_SERVER['SCRIPT_FILENAME'])&&'comments.php'==basename($_SERVER['SCRIPT_FILENAME']))
  2. die('Pleasedonotloadthispagedirectly.Thanks!'); ?>

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

  1. <liclass="comment"> <divclass="gravatar"><imgalt=""src=’images/gravatar.png’height=’48′width=’48′/><aclass="comment-reply-link"href=&quot;>Reply</a></div>
  2. <divclass="comment_content"> <divclass="clearfix"><citeclass="author_name"><ahref="">JoeBloggs</a></cite>
  3. <divclass="comment-metacommentmetadata">January6,2010at6:26am</div> </div>
  4. <divclass="comment_text"> <p>Donecleo.Aliquamrisuselit,luctusvel,interdumvitae,malesuadaeget,elit.Nullavitaeipsum.Donecligulaante,bibendumsitamet,elementumquis,viverraeu,ante.Fuscetincidunt.Maurispellentesque,arcuegetfeugiataccumsan,ipsummimolestieorci,utpulvinarsapienloremnecdui.</p>
  5. </div> </div>
  6. </li>

改成:

  1. <?php if(!emptyempty($post->post_password)&&$_COOKIE['wp-postpass_'.COOKIEHASH]!=$post->post_password){
  2. //ifthere'sapassword //anditdoesn'tmatchthecookie
  3. ?> <liclass="decmt-box">
  4. <p><ahref="#addcomment">请输入密码再查看评论内容.</a></p> </li>
  5. <?php }elseif(!comments_open()){
  6. ?> <liclass="decmt-box">
  7. <p><ahref="#addcomment">评论功能已经关闭!</a></p> </li>
  8. <?php }elseif(!have_comments()){
  9. ?> <liclass="decmt-box">
  10. <p><ahref="#addcomment">还没有任何评论,你来说两句吧</a></p> </li>
  11. <?php }else{
  12. wp_list_comments('type=comment&callback=aurelius_comment'); }
  13. ?>

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

  1. functionaurelius_comment($comment,$args,$depth) {
  2. $GLOBALS['comment']=$comment;?> <liclass="comment"id="li-comment-<?phpcomment_ID();?>">
  3. <divclass="gravatar"><?phpif(function_exists('get_avatar')&&get_option('show_avatars')){echoget_avatar($comment,48);}?> <?phpcomment_reply_link(array_merge($args,array('reply_text'=>'回复','depth'=>$depth,'max_depth'=>$args['max_depth'])))?></div>
  4. <divclass="comment_content"id="comment-<?phpcomment_ID();?>"> <divclass="clearfix">
  5. <?phpprintf(__('<citeclass="author_name">%s</cite>'),get_comment_author_link());?> <divclass="comment-metacommentmetadata">发表于:<?phpechoget_comment_time('Y-m-dH:i');?></div>
  6. &nbsp;&nbsp;&nbsp;<?phpedit_comment_link('修改');?> </div>
  7. <divclass="comment_text">
  8. <?phpif($comment->comment_approved=='0'):?> <em>你的评论正在审核,稍后会显示出来!</em><br/>
  9. <?phpendif;?> <?phpcomment_text();?>
  10. </div> </div>
  11. <?php}?>

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

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

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

  1. <!–CommentForm–> <formid="comment_form"action=""method="post">
  2. <h3>Addacomment</h3> <divclass="hrdottedclearfix">&nbsp;</div>
  3. <ul> <liclass="clearfix">
  4. <labelfor="name">YourName</label> <inputid="name"name="name"type="text"/>
  5. </li> <liclass="clearfix">
  6. <labelfor="email">YourEmail</label> <inputid="email"name="email"type="text"/>
  7. </li> <liclass="clearfix">
  8. <labelfor="email">YourWebsite</label> <inputid="website"name="website"type="text"/>
  9. </li> <liclass="clearfix">
  10. <labelfor="message">Comment</label> <textareaid="message"name="message"rows="3"cols="40"></textarea>
  11. </li> <liclass="clearfix">
  12. <!–AddCommentButton–> <atype="submit"class="buttonmediumblackright">Addcomment</a></li>
  13. </ul> </form>

改成:

  1. <?php if(!comments_open()):
  2. //Ifregistrationrequiredandnotloggedin. elseif(get_option('comment_registration')&&!is_user_logged_in()):
  3. ?> <p>你必须<ahref="<?phpechowp_login_url(get_permalink());?>">登录</a>才能发表评论.</p>
  4. <?phpelse:?> <!CommentForm>
  5. <formid="commentform"name="commentform"action="<?phpechoget_option('siteurl');?>/wp-comments-post.php"method="post"> <h3>发表评论</h3>
  6. <divclass="hrdottedclearfix">&nbsp;</div> <ul>
  7. <?phpif(!is_user_logged_in()):?> <liclass="clearfix">
  8. <labelfor="name">昵称</label> <inputtype="text"name="author"id="author"value="<?phpecho$comment_author;?>"size="23"tabindex="1"/>
  9. </li> <liclass="clearfix">
  10. <labelfor="email">电子邮件</label> <inputtype="text"name="email"id="email"value="<?phpecho$comment_author_email;?>"size="23"tabindex="2"/>
  11. </li> <liclass="clearfix">
  12. <labelfor="email">网址(选填)</label> <inputtype="text"name="url"id="url"value="<?phpecho$comment_author_url;?>"size="23"tabindex="3"/>
  13. </li> <?phpelse:?>
  14. <liclass="clearfix">您已登录:<ahref="<?phpechoget_option('siteurl');?>/wp-admin/profile.php"><?phpecho$user_identity;?></a>.<ahref="<?phpechowp_logout_url(get_permalink());?>"title="退出登录">退出&raquo;</a></li> <?phpendif;?>
  15. <liclass="clearfix"> <labelfor="message">评论内容</label>
  16. <textareaid="messagecomment"name="comment"tabindex="4"rows="3"cols="40"></textarea> </li>
  17. <liclass="clearfix"> <!AddCommentButton>
  18. <ahref="javascript:void(0);"onClick="Javascript:document.forms['commentform'].submit()"class="buttonmediumblackright">发表评论</a></li> </ul>
  19. <?phpcomment_id_fields();?> <?phpdo_action('comment_form',$post->ID);?>
  20. </form> <?phpendif;?>
函数名称 函数功能 判断用户是否登录 博客登录地址 用于获取评论者博客地址 $comment_author 读取cookie,如果该用户之前已经发表过评论则自动帮助用户填写用户名 $comment_author_email 读取cookie,如果该用户之前已经发表过评论则自动帮助用户填写Email $comment_author_url 读取cookie,如果该用户之前已经发表过评论则自动帮助用户填写博客地址 do_action(‘comment_form’, $post->ID); 该函数为某些插件预留 wp_logout_url 退出登录的链接

好了,评论模板comments.php制作完毕!最后本次修改后的主题文件下载:


魔域互通版官网 https://ht.my.99.com/
最新新闻
图片新闻
新闻推荐