Archive

Posts Tagged ‘教程’

不用插件制作wordpress中的guestbook

November 25th, 2009 7 comments

首先,我想实现的guestbook效果是,后面留言的人显示在最前面,同时显示这个人是第几个留言的,在wordpress2.7以上虽然可以通过直接在控制面板里设定留言倒序显示,但是这样设定之后,包括普通文章的留言也会变成倒序显示,这样不是我想要的,普通文章里,应该让最早留言的人排在最前面,以显示出沙发的重要性呵呵..

当然这个是可以用插件实现的,但想想这个功能应该不会很麻烦,所以能不用插件就不用插件吧.

先说明下,这里面的更改都是基于2.7以上版本的代码,如果你的主题是仍旧使用老版本的代码,则不适用.

首先先看看你所用主题一开始是不是就默认页面是可以留言的,如果可以,则我们直接copy page.php的内容来修改,否则copy single.php的内容来修改,在你所用的主题文件夹重新建个文件GuestBook.php,将copy来的内容复制进去,然后在这文件的开头写上

<?php 
/*
Template Name: GuestBook
*/
?>

代表它是一个名字为GuestBook的模版文件,然后在该文件中查找comments_template的函数,将它里面的参数改成如下所示

comments_template('/GuestBookComments.php', true);

注意到,正常情况下,该GuestBook不同于普通文章,它不需要显示作者与发布时间,所以如果你一开始copy的有显示这些信息,建议删掉.
接下来,建立一个GuestBookComments.php的文件,将主题里原始的comments.php的所有内容copy进去,这里面的内容很多,我们不需要管这些,直接查找function_exists(‘wp_list_comments’)这个字样,这里的旁边就是我们所要修改的地方,在这的下面,应该会存在wp_list_comments(‘type=comment&callback=custom_comments’);类似这种的字样(你的callback可能跟我不一样),直接把这句替换成以下几条语句

global $countReply;
$countReply=get_comments_number();
wp_list_comments('type=comment&callback=guestbook_comments&reverse_top_level=TRUE');
unset($countReply);

至此,GuestBookComments.php修改完成.接下来要修改functions.php的内容,注意到我刚才说到的,wp_list_comments(‘type=comment&callback=custom_comments’),看你原来主题文件里的comments.php该语句的callback是什么,记下来,如我这里是custom_comments,然后在functions.php里查找function custom_comments,将找到的整个函数复制,粘贴在该函数的下方,并把函数名改成guestbook_comments,接下来我们所要做的就是为每个留言者添加序号了.首先在该函数的开头写上

global $countReply;

然后找个合适的位置,就是你要把序号添加在每个留言的哪个地方,这个依个人所好,放在时间或者作者的后面即可,添加内容如下

<?php echo ($countReply--); ?>

至此,所有文件都已经修改完毕,接下来,只要建页面的时候,模版选择GuestBook即可!
PS:最好把允许trackbacks跟pingbacks的选项去掉,留言薄没必要有这功能~0~

Categories: Technology Tags: ,