wordpress 不显示管理员评论

wordpress自带的或者部份主题在最近评论、留言的显示中,访客的留言和博主的回复都一起显示的。如果博主一次性回复很多条留言,那最近评论模块都变成自己的留言了。阿柯最近更换的这款主题也是这样,所以又要折腾把这些自己回复的评论屏蔽掉。

修改的代码如下:
//找到下面这段,可以通过搜索get_comments
$comments=get_comments(array(‘number’=>$limit,‘status’=>‘approve’));
//修改为
$comments=get_comments(array(‘number’=>$limit,‘status’=>‘approve’,‘user_id’=>0));

wordpress自带的最新评论不怎么好用,很多主题都会有自带的最新评论模块,因此要修改的地方也要根据情况来定。

1、wordpress自带最近评论

在wordpress\wp-includes\default-widgets.php中先找到查找$comments=get,在这个里面找到上面要修改的代码(大约在643行,不同版本的wordpress代码会有所不同),按上面要求,加入‘user_id’=>0函数即可。

2、主题带的最近评论

主题带的最近评论代码一般在sidebar.php或者functions.php,找到上述代码修改即可。

修改完后会有个问题,就是这种方法只适用于隐藏登录后发表的回复,如果不登陆,即使用和后台管理员一样的昵称、E-mail在前台回复,依然会显示在最近评论中的。

WordPress实现首页文章列表自动摘要

WordPress在不使用任何的插件的情况下是能在首页实现摘要显示的,但它实现起来不是那么方便,或要自己做文章的中间加;或要修改主题中的标签。总之是不太方便吧。要怎样才能让WordPress自动实现在首页等位置(除了单篇文章的其他页面)只显示指定字节数的摘要,而不用操作其他不关文章的事呢?网上有很多方法,但阿柯试了很多都没有效果。这并不是说别人分享代码有误,只是对个别主题并不适合,但“冰古”这个代码,阿柯试用了几个主题,都适合,兼容性很好!

/**
 * author 冰古
 * link https://wanwp.com
 */
$size = 500;    // 500是显示的字节数,可按照自己的要求修改
$more_link_text = 'more...';    // 显示在摘要后面的提示

add_action('the_content', 'control_content_size');

function control_content_size($content) {
    global $size, $more_link_text;
    if (is_singular()) return $content;
    $content = strip_tags($content);
    $content = cut_str($content, $size);
    $content = '<p>' . $content . '</p><p><a href="' . get_permalink() . "\" class=\"more-link\">$more_link_text</a></p>";
    return $content;
}

/**
 * cut_str用于截断包含中文(或其他多字节?)的utf8编码的字符串
 * @param string $str utf8编码的字符串
 * @param int $len 需要截取的长度(单位是字节)
 */
function cut_str($str, $len) {
    if (!isset($str[$len])) {
        // 判断字符串长度是否已经达到需要截取的长度
        // 未达到时,直接输出原字符串
    } else {
        if (seems_utf8($str[$len-1])) // 判断截断字符串的最后一个字符是否是utf8编码的
            $str = substr($str, 0, $len); // 如果是utf8编码的,直接截断输出
        else { // 如果不是utf8编码的,因为utf8编码的中文是三个字节进行保存的,则判断该字符和周围字符组成的字符串是否符合utf8编码
            if(seems_utf8($str[$len-3].$str[$len-2].$str[$len-1]))
                $str = substr($str, 0, $len-3) . $str[$len-3] . $str[$len-2] . $str[$len-1];

            elseif(seems_utf8($str[$len-2].$str[$len-1].$str[$len]))
                $str = substr($str, 0, $len-2) . $str[$len-2].$str[$len-1].$str[$len];

            elseif(seems_utf8($str[$len-1].$str[$len].$str[$len+1]))
                $str = substr($str, 0, $len-1) . $str[$len-1].$str[$len].$str[$len+1];

            else // 这个else应该不用也是可以的
                $str = substr($str, 0, $len);
        }
    }
    return $str;
}

使用方法:

按照自己的要求修改代码中的$size和$more_link_text
将修改后的代码加入到主题的functions.php中

提示:

如果你之前使用了!–more–标签,在显示中可能有点不好看。

百度再次放出本博内页,开心呐~~

今早起来打开电脑,习惯用百度搜索一下阿柯博客,发现一直停在2月22号的快照变成了24号的了。虽然不是最新的,但总算有响应。心想既然百度对本博有回应了,site一下吧,看看内页有没有放出来。都记不起只放出首页的日子有多长了。记得有一位站长的网站百度只放首页持续了一年!唉,再想想自己的现状,真担心。

但这一site就真的有惊喜了!百度放出阿柯博客内页了。开心啊~~~虽然只放出十来页,但毕竟开始放出内页了。期待从此以后,百度能陆陆续续放出有所内页,最好能秒收。这样就不怕别人恶意采集了。百度的收录和排名,直接影响写博的心情。特别是百度对待原创文章的认可,对写博的人是一种鼓励。

阿柯不知道百度这次放出本博内页是真正的认可以本博还是又是一次试探性的考验。记得去年底也曾小范围放出本博内页,但不知道什么原因,很快又收回,然后就是一直都只放首页。今天突然放出来,不知道是不是与阿柯昨晚在百度百科创建阿柯博客词条有一定的关系。但昨晚创建的词条还没有通过啊~~能不能通过还是一个问题呢。

不管什么原因,阿柯都希望百度这次的动作,是对本博的真正肯定。因为自本博更换域名到现在,也3个多月了吧?这考核期也不能说短了。并且本博没有复制粘贴别人的文章,多是原创加修改整理。我想,真心做站子,总会得到认可的。玩博,可能真的贵在坚持!

wordpress 英文垃圾评论很多

最近不知道怎么了,自己的wordpress很多垃圾评论。一些是淘客网站推广的,也就是来你文章评论里抛一句九不搭八的话,如“终于找到了,谢谢博主”、“太好了,明天你还会更新吧?我明天还来哟”之类的让人看了很蛋痛的话;另一些则是全英文的评论。我不知道那些全英文的评论是怎么发到我博里来的,照理说我这个人生活博客一个,也没什么人气和来量,卖广告要卖到我这地方,看这人脑子十有八九让驴踢了!

我想那些垃圾评论是借助wordpress的评论机制,通过获取可以正常访问的wordpress博客网址,然后软件群发的。我现在每天打开博客第一件事就是查看评论,可每次看到的都是这些垃圾的评论占着自己的视觉,很不爽。只好一条条广告评论网址地屏蔽。有时候一天下来,后台里拦截到的垃圾评论就差不多有一百条。

阿柯什么时候好像看到过垃圾评论拦截的设置里有“若评论是全英文则自动放入垃圾评论评论”的设置。但阿柯在后台找到几次,都没有这个选项。想想,可能当时看到的是防垃圾评论插件所具有的功能吧。插件就不想再装了,能少装一件是一件。虽然现在插件用不多,就四五个。但听说插件用多了会拖慢网站速度,所以对于插件,能少则少。那天在群里听到一位博友说他用了差不多二十个插件,我差点晕了过去。至于吗?有必要吗?我都不知道那位博友的博客主题是什么样的,估计什么东西都得用插件实现,没有一样是通过代码的。或者是他博客扩展的功能太多了。

唉,先不折腾它。现在能屏蔽一个垃圾网址算一个。今晚把原本不想再续费的两个域名又续费了,花了120块。不是花不起这钱,只是觉得这两个域名都没开站子,这样光养着有什么意义。我都搞不懂为什么今晚就有续费的冲动。既然续费了,就找个免费的空间搭个站子吧,搭个站子放着,有没有来量不要紧,有没有更新也不要紧,就那样放着……

wordpress博客主题折腾告一段落,感谢博友“星痕”的鼎力相助

最近很多博友都在更换主题,阿柯见到梦想象牙塔的博友星痕换上D4自已的修改版时,心里也蠢蠢欲动。博友星痕真的是很有心,很大方地将自己修改了好多天的D4分享给我使用,并且怕我使用出错,还自己帮我修改好再打包发过来。阿柯那个感动呀,好久没遇到这么友好的博友了。

但D4的兼容性不好使自己放弃了使用的念头之余,决心找一款自己长期使用的主题。在星痕的博客上,又见到他推荐主题了,这次他推荐的是恋月的Blog+CMS主题。恋月的这款主题真是清新淡雅,后台功能强大,简约而不简单。看到版面大气的主题,阿柯立即下载测试,感觉兼容性非常的好,使用上也很方便。并且不用使用插件,就可以实现点击数、相关日志(像无觅插图版的一样,但不使用插件)、评论邮件、头像缓存、页面缓存等实用的功能。这真的太强大的!!

但这强大的恋月主题,阿柯仅使用几天就换下了。原因是主题文章缩略图太多了,打开页面时加载文章缩略图是一卡一卡的。这点对于求速度于生命的阿柯来说,太不适合了。感觉恋月的主题,如果做图片站,绝对是首选。

最后就是现在这款纯CSS主题了,真的没有一张图片。当时我打包发给星痕作修改时,他都不由自主地问了一下“这么小?”。真的很简单的主题,就几十K。加载速度可以说是秒开了。虽然也是纯CSS,但比阿柯使用的上一款“麦子花开”的纯CSS主题漂亮得多。在非IE浏览器,如火狐、谷歌等浏览下,感觉模板很帅!IE下有点小错位,但不影响使用。毕竟,每种浏览都有兼容的差异,这点无可厚非。

使用中阿柯给主题加上了签标云页面,日志归档,留言板常用页面。在首页第一篇日志下、文章中、分页处、评论输入框的右边等位置加入了GG广告。在给论输入框的右边加广告时,由于不懂CSS,还让星痕帮忙,成功解决。为了这个论输入框的右边广告位和主题日志评论分页等问题,博友星痕是足足帮我折腾了一天了。在此再次表示感谢。虽然阿柯博客上的广告也没什么人点击,但放上去,感觉丰富了博客的内容。哈哈,广告是装点的必需品。

这次主题的更换到此算是完结了,短时间不会再在此问题上折腾。毕竟,阿柯对目前的主题很满意。一度以为个人独立博客最终会让门户博客给吞噬,但阿柯在转wordpress之后结识了很多热心的博友,从中感受到玩博的乐趣,保持了乐观的态度,让网络生活富有激情。谢谢你们……

wordpress防采集:禁用feed订阅功能

昨晚阿柯和博友星痕一晚上都在折腾这个问题:如何防止自己的原创文章轻易被采集。因为我们俩辛辛苦苦写的文章被一个采集博客“秒收”了。本来网络这东西,转载和采用别人的一些观点等,是很正常的。但这家采集博客,是连着标题、内容一字不漏地把你的文章采到他博客里。而他的博客在百度里有很好的权重,他采集了你的,但搜索同一个关键字,采集站比原创站排名还前很多。或者是直接收采集站而不收原创站的页面。说到底,百度是认为“采集者”是原创了。这下我们这些新博就杯具了,替人做了嫁衣,还死死盼百度终有一天会认可自己。阿柯记得当时百度是放出了阿柯博客的内页的,但仅一两个星期后,又收回了,到现在仅只放首页。太杯具了,百度这点真让人蛋痛。

昨晚经博友星痕的提醒,说这采集的人应该是使用feed订阅采集我们的文章的。因为他开始以为对方是人工复制。结果他设定零晨2点时发布文章,一样被对方“秒收”。采集者不可能通宵不睡来采集我们的文章吧?所以结论只有一个,他是利用插件,通过订阅我们的博客来采集的。

大致认为是这样的原因后,我和星痕就开始折腾禁用wordpress的订阅功能了。星痕通过搜索,找到了以下一段代码:

/**
* Disable Our Feed Urls
*/
function disable_our_feeds() {
wp_die( __('<strong>Error:</strong> No RSS Feed Available.') );
}

add_action('do_feed', 'disable_our_feeds', 1);
add_action('do_feed_rdf', 'disable_our_feeds', 1);
add_action('do_feed_rss', 'disable_our_feeds', 1);
add_action('do_feed_rss2', 'disable_our_feeds', 1);
add_action('do_feed_atom', 'disable_our_feeds', 1);

并将以上这段代码加在当前主题的functions.php之后,成功禁用了wordpress的RSS订阅功能。但阿柯照着上面的方法做,却没有一点效果。苦苦搜索答案,人家再说header.ph中的RSS2.0那段代码也删掉。但阿柯删了,还是不能成功。

之后又在一论坛上见到有人说3.X.X版以上的,把wp-includes目录下feed-*.php全部删除就可以禁用订阅了。但阿柯照做之后,还是没效果。把feed.php,也删掉之后就是出错。阿柯那个郁闷啊,为什么那些方法别人都可以,就自己的不行?就快要放弃的时候,我想到了wordpress中文论坛。搜索有关rss的,结果全是怎么使用feed、解决feed订阅问题的。毕竟,订阅本来就是为了博客的推广,是个很有用的功能,只是被采集者利用此功能做成采集插件了。阿柯转念一想,别人的feed功能出错来求助,我不就是想自己的feed出错吗?这样一想,立即继续翻阅搜索结果主题贴。最终在一个“feed功能出错,求助,已解决”的主题里找到让feed出错的非常简单的方法:在博客根目录建立一个名为“feed”文件夹即可!!

成功禁了feed之后,星痕和阿柯还把博客的右键复制功能也通过代码禁用了。虽然禁用右键只能防君子不能防小人,但禁了右键,他想通过源代码手复制你文章也不容易了。毕竟源码代里的版式都是乱的,他要一篇一篇复制也累死他!!

今来到办公室点击星痕的博客时,发现他把右键禁用代码删除了。可能是性对搜索收录不好吧。但阿柯想了想,禁用右键功能是通过JS代码实现的,这类代码蜘蛛是可以忽略掉的,应该不影响收录。并且阿柯还要看看,禁了wordpress feed rss订阅功能后,我现在发的这篇文章那个采集博客还可不可以“秒收”采集我的。如果不能,证明起了点效果了。期等中……

使用willin的头像缓存代码出错的原因

更换新的主题后,阿柯一直在给主题添加一些自己想要的功能。比如日志归档、标签云集等页面。当然,为了提高页面访问速度,缓存头像还是有必要的。为了减少插件的使用,想用代码实验头像缓存。

找了很久,发现是willin的头像缓存代码不错。使用起来相当简单,就直接在functions.php中加入如下代码就OK了:

function my_avatar($avatar) {
$tmp = strpos($avatar, ‘http’);
$g = substr($avatar, $tmp, strpos($avatar, “‘”, $tmp) – $tmp);
$tmp = strpos($g, ‘avatar/’) + 7;
$f = substr($g, $tmp, strpos($g, “?”, $tmp) – $tmp);
$w = get_bloginfo(‘wpurl’);
$e = ABSPATH .’avatar/’. $f .’.jpg’;
$t = 1209600; //設定14天, 單位:秒
if ( !is_file($e) || (time() – filemtime($e)) > $t ) { //當頭像不存在或文件超過14天才更新
copy($g, $e);
} else  $avatar = strtr($avatar, array($g => $w.’/avatar/’.$f.’.jpg’));
if (filesize($e) < 500) copy($w.’/avatar/default.jpg’, $e);
return $avatar;
}
add_filter(‘get_avatar’, ‘my_avatar’);
以上代码还支持后台评论头像的缓存,使用简单,相当不错。
但阿柯使用时,头像能缓存,页面显示一切正常。但登陆后台时出错,不能登陆。折腾了很久都无法解决。最后求助于主题作者麦子花开。麦子的一句话提醒了我。原来出错的原因是我直接使用记事本编辑代码,在保存时一些编码格式不正确的原因。我在登陆后台,使用主题文件编辑器加入代码时,一切正常!!
PS:该方法虽然能缓存头像,但对于没有设置avatar头像的留言,却不能显示自定义的avatar/default.jpg头像。有待博友支招

阿柯博客正式启用新域名kzyblog.com,友链博友麻烦更新

阿柯博客在goddady注册的新域名kzyblog.com今天终于在万网备案成功了。收到信息产业部发来的通过短信时,阿柯是那个的鸡冻啊!

新域名的通过,接下来的工作就是给wordpress进行更换域名的工作了。之前听很多博友说更换域名很麻烦,所以今天特意先上网了解了一下,最终敲定更换域名的方法。本方法只需三步就完美解决wordpress更换新域名:

1.先把新域名也绑定主机,并在域名管理对主机作IP绑定(唉,这也算一步,鸟都知道需要这一步)

2.管理员登陆WordPress后台,点击设置→常规,将里面的WordPress 地址(URL)和站点地址(URL)都修改为新的域名,然后点击保存更改。如果你是用旧域名登陆wordpress后台来修改新的域名的,保存时可能会出现错误提示。但不要紧,返回首页,刷新一下就可以了。到这步,新域名在博客里的访问全都正常了。但是由于博客文章里的一些链接和图片地址还是用的旧的域名,所以还需要对数据库进行一些修改。

3.登陆phpmyadmin,选择自己博客的数据库,然后点击SQL,将下面三行命令输入进去:

UPDATE wp_posts SET post_content = replace( post_content, ‘old.com’,’new.com’) ;

UPDATE wp_comments SET comment_content = replace(comment_content, ‘old.com’, ‘new.com’) ;

UPDATE wp_comments SET comment_author_url = replace(comment_author_url, ‘old.com’, ‘new.com’) ;

然后点击 执行,如果没有出现错误,那么就会将文章和评论里的所有地址进行了更换。如果还不放心,就数据库的搜索功能搜索一下旧域名,看看那些表里面还有旧域名的,再替换一下就得了。但这一步基本没必要了。

更新好域名这后,接下来最重要的工作就是对新旧域名实现301定向了。至于301定向的重要性,阿柯认为没有必要再说了。阿柯只知道,更换域名作301是必需要做的。除非你想一切重来。

好了,废话不多说了。因为阿柯博客使用的是linux主机,并一直利用.htaccess文件作伪静态设置,而301的代码也必须在.htaccess文件才起作用。所以阿柯在此之前很担心301代码和伪静态代码会有冲突。搜索了解一下,得知301代码要在伪静态代码之前。对照两者代码之后,阿柯在.htaccess文件的第一段代码RewriteEngine On下面添加了301定向的代码:

rewritecond %{http_host} ^kezengyuan.com [nc]
rewriterule ^(.*)$ https://kzyblog.com/$1 [L,R=301]

合并起来就是:

RewriteEngine On
rewritecond %{http_host} ^old.com [nc]
rewriterule ^(.*)$ https://new.com/$1 [L,R=301]

然后上传.htaccess替换掉主机里面旧的.htaccess。到这阿柯以为一切都OK了。结果一点击日志页面链接,出错!阿柯那个的惊啊,以为代码有错。但仔细想想之后,到后台重新提交了一下固定链接,再回到首页测试,一切正常!

到这里,只是测试加了301代码后的伪静态可正常访问了,但301定向设置有没有生效呢?这个很简单,如果访问旧域名会自动跳到新域名里,那就证明301生效了。阿柯测试了,一切正常!那个爽啊,可以洗澡睡觉了。

最后麻烦友链的博友更新一下阿柯博客的友情链接网址了,麻烦啦~~~

 

WordPress3.3.1版升级的功能,后台自动升级成功

wordpress更新速度真是好快呀,3.3版的升级没多久,3.3.1又出来了。wordpress3.3.1版主要是安全和维护方面的更新,本维护版本修复了 3.3 版本的 15 处问题,另外还有一个影响了 3.3 的跨站脚本攻击漏洞。修复的15处问题如下:

wp_print_styles() causing mid-page scripts/styles to bleed into admin
(wp_print_styles()造成页面中的脚本/风格渗入管理)
Multi-site Upload Limit Stuck at 50MB
(多站点上传限制停留在50MB)
Wrong widget count on dashboard
(错误的仪表板部件计数)
Multisite: No Database Prefix causes strpos(): Empty delimiter
(多地点:无数据库前缀的原因判断了strpos()函数的返回值是TRUE或是FALSE:空分隔符)
Never show two flyouts at once
(从不显示两个弹出按钮一次)
$userdata not populated properly
($用户数据不正确填充)
Toolbar shows a warning on a second call
(工具栏显示了第二个电话警告)
Unwanted backslash in output
(在输出的有害反斜杠)
Users list ‘Change role to’ allows for changing logged-in Admin role to Subscriber
(用户列表“变化中的作用,可以改变登录的管理员角色订户)
(current-menu-item and current_page_item classes incorrectly added to custom menu items with no URL value. )
当前菜单项和current_page_item类错误地添加到自定义菜单项,没有URL值。
Remove .button styling from _default_wp_die_handler()
(_default_wp_die_handler(删除。按钮样式))
Press This #message is ugly (3.2 to 3.3 regression)
(按下此#消息是丑陋的(3.2至3.3回归))
Quick Edit/Reply missing tabindex causes <tab> to miss Update Comment/Reply button
(快速编辑/回覆失踪的tabIndex <TAB>原因错过更新评论/回复按钮)
Script Loader dies in 3.3 on no-JSON PHP
(装载机脚本死无JSON的PHP 3.3)

以上翻译均为浏览器自动翻译,很多中式英文翻译,自己理解,呵呵,赶快升级吧

主机禁用Mail()函数实现wordpress评论回复发邮件(适用3.3.1最新版)

大家都知道,Wordpress的评论回复功能就是使用主机的Mail函数实现的。但很多主机都把Mail函数禁用了。想知道自己使用的主机,支持不支持Mail函数,方法好简单:在登陆后台的时候,使用忘记密码。如果提示“邮件无发发送,可能Mail函数被禁用”如此云云,则说明你使用的主机Mail函数被禁了。

然而Wordpress的评论回复功能,可以增加用户的粘度。也就是用户在你博客评论之后,可能会忘了曾经评论过,这个评论回复的邮件会提醒他们,使他们再一次回访到你的博客,增加用户粘度。

既然Wordpress的评论回复功能这般重要,被禁用Mail函数的博友要么换主机,否则就必须想办法了。

如果你使用的是windows主机,那么你可以使用本方法测试效果。阿柯使用的是禁用了mail函数的Linux主机,在使用如下方法成功解决回复评论不发送邮件的问题:

第一步:下载wp-mail-smtp插件,并启用,进行相关的配置。配置SMTP Port为25,Encryption选择第一项否,Authentication选择第二项,并在下面填好你的邮箱登陆用户名和密码。设置好之后,在Send a Test Email中填好你的邮箱地址,并发送测试邮件。登陆你的邮箱,如果能收到测试邮件,则你的wp-mail-smtp设置生效!

第二步、下载replyMail 插件(这插件支持wp最新版3.3.1),不要下载Comment Reply Notification插件,这个插件已不支持最新版。启用replyMail 并配置发送邮件内容。

前台回复评论测试一下,成功收到评论回复邮件!截图如下!

给wordpress标题添加欢信息,给用户宾至如归的感觉

大家可能在一些WordPress网站上看到了,当你在这个网站评论过之后,下次再打开这个网站,标题上就会显示如”XXX,欢迎回来!”的信息,给人很温馨的感觉,也让用户清楚的知道,这个站他曾今来过。

方法很简单,直接将下列代码放入header或footer中即可

<?php if($_COOKIE[“comment_author_” . COOKIEHASH]!=””) { ?>
<script type=”text/javascript”>document.title = “<?php echo $_COOKIE[“comment_author_” . COOKIEHASH].’,欢迎归来~’; ?>” + document.title</script>
<?php } ?>

注:一些朋友担心这样等于修改了WordPress标题,会影响SEO。其实这个考虑是多余的,首可以看到被输出的文字是被套在 script 里的,一个 JS 的脚本是无法被搜索爬虫识别的。如果确实担心这个,也可以把欢迎信息加在评论输入框上面。不过这样的话,就只有当重新来访的用户在评论时才会看到,而不是一打开你的博客就看到,效果可能会差很多啦。