为了加强互动行,考虑在侧边栏增加能显示最新评论的栏目,
途中还遇到一点小问题.
首先,在wordpress的默认侧栏小工具里是有显示评论的,
不过只能显示人名和评论的文章,
例如:温暖色调 发表在《Message Board》
由于硬件限制,可用内存较小,不考虑再增加插件实现功能,
在网上有可以修改wp-includes/default-widgets.php(WP小工具文件)的教程,
不过还要下载软件来修改另一个文件,暂时不考虑该方法.
由于已经装了PHP解析插件(参见:在WordPress文章,页面及小工具中加入并执行PHP代码),
可以直接在WP中写入PHP,
计划在小工具的根本工具中直接写入PHP实现评论显示,
在网上搜索得到代码
<?php
$limit = '10'; //设置评论显示数量
$admin_email = "'" . get_bloginfo ('admin_email') . "'"; //获取管理员邮箱,以便排除管理员的评论
$rccdb = $wpdb->get_results("
SELECT ID, post_title, comment_ID, comment_author, comment_author_email, comment_content
FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts
ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID)
WHERE comment_approved = '1'
AND comment_type = ''
AND post_password = ''
AND comment_author_email != $admin_email
ORDER BY comment_date_gmt
DESC LIMIT $limit
");//数据库查询获得想要的结果
foreach ($rccdb as $row) {
$rcc .= "<li>". "<h6>".get_avatar($row,$size='32')."</h6>" . "<a href='"
. get_permalink($row->ID) . "#comment-" . $row->comment_ID
. "' title='评论于 " . $row->post_title . "'>".$row->comment_author ."</a>". " : <br />" . cut_str($row->comment_content,30). "</li>";
}//遍历查询到结果,获得想要的值,其中插入一些HTML元素,以便定义CSS样式
$rcc = convert_smilies($rcc);//允许评论内容中显示表情
echo $rcc;//输出结果
?>
把代码贴入,立马得到错误Fatal error: Call to a member function get_results() on a non-object in…
由于对PHP不是很懂,遂从后往前删代码,最后定为到变量$wpdb上,
在代码最前加上global $wpdb;将之变为全局变量即可,
然后新的错误出现了:Fatal error: Call to undefined function cut_str() in…
显然cut_str()不存在,
只好再找一个了,搜索cut_str() php即能得到很多结果,给出一例:
function cut_str($sourcestr,$cutlength){
$returnstr="";
$i=0;
$n=0;
$str_length=strlen($sourcestr);//字符串的字节数
while (($n<$cutlength) and ($i<=$str_length)){
$temp_str=substr($sourcestr,$i,1);
$ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码
if ($ascnum>=224) //如果ASCII位高与224,
{
$returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符
$i=$i+3; //实际Byte计为3
$n++; //字串长度计1 19.
}
elseif($ascnum>=192) //如果ASCII位高与192,
{
$returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
$i=$i+2; //实际Byte计为2 24.$n++; //字串长度计1
}
elseif($ascnum>=65 && $ascnum<=90) //如果是大写字母,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //实际的Byte数仍计1个
$n++; //但考虑整体美观,大写字母计成一个高位字符
}
else //其他情况下,包括小写字母和半角标点符号,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //实际的Byte数计1个
$n=$n+0.5; //小写字母和半角标点等与半个高位字符宽…
}
}
if ($str_length>$cutlength)
{
$returnstr = $returnstr;//超过长度时在尾处加上省略号
}
return $returnstr;
}
将之加入所用主题的function.php,
再次刷新,评论显示,只需调整样式即可.
由于加入了评论表情,而字符到表情的转换在cut_str()之后,
如果表情字符刚好在所取字符转长度位置,就会出现问题,
导致显示表情原字符被截取,不能在转换为表情,
算是一个小小缺憾.
要不从里面找两个错别字?
哪有?
那要不你找找,还有至少一篇文章有
懒得找了,意思传达到了就行了,有需求的时候就找个插件处理处理
:smilies13: 博主的右侧最近评论也是这么弄的吗?
我的也是这么弄的,只是有几个参数根据需要调整了一下
我比较喜欢你的 表 情 哇咔咔 能不能来一份 :smilies24:
这个是在人人上弄下来的,你要的话我可以邮你一份
已发送,请查收