这个想法又是老郑提出的,这件事比较囧,由于我怕网上已经有人已经写过类似的文章,所以搜了一下,居然搜到老郑自己的...不过那个方法是用commentLUV这个插件,此插件并非自动显示,而是需要评论者自己勾选然后手动添加到评论内容中,
所以我就觉得这篇文章可以写了.下图是鼠标移到评论者昵称上的效果:
判断网址有效性
CP党和小白白们可以无视这段,直接看二三小节.
这个问题我单独拎出来,用来判断feed地址是否能正常访问,因为如果不能访问,会出现parse_url的WP_ERROR,导致后面的元素都停止加载,解决方法是用PHP的get_headers()
函数,如果HTTP返回参数200说明网页能正常访问,代码如下:
$uri='XXX';
$array = get_headers($uri,1);
if(preg_match('/200/',$array[0]))//说明能正常访问
hover效果
在functions.php中找到类似这样的句子
<?php printf(__('<cite class="fn">%s</cite>'), get_comment_author_link()) ?>
改成
<?php printf(__('<span class="rss"><cite class="fn">%s</cite>'), get_comment_author_link()) ?> <!--这里放下一节的的正式代码完整版本--></span>
然后加上css
.comment-author .rss div{display: none;position:absolute;background:#fff;border:1px solid #bbb;padding:10px;top:30px;left:50px} .comment-author .rss:hover div{display:block}
完整代码
此段代码应该放在comments的Loop内
<?php if(current_user_can('level_10')){//只对管理员显示,如果想对所有人显示,请去掉此行和最后一个} //但是请注意:抓取他站feed会严重拖慢你的网速,尤其是遇到feed无效时,建议只对管理员显示;异步加载大神可无视 $uri =get_comment_author_url().'/feed';//获取评论者网址,一般而言"网址/feed"是网站feed的地址 $match1 = '/http/';//无网址游客生成的comment_author_url中没有http if( preg_match_all($match1, $uri, $match) ){//如果填写了网址则开始抓feed $array = get_headers($uri,1); //判断网址有效性 if(preg_match('/200/',$array[0])){ //如果网址有效 $feed = fetch_feed($uri); if(! is_wp_error($feed)) { $items = $feed->get_items(0,1); //1可以改成你想抓取的文章数 echo '<div>';//如果没有使用第二节的hover效果,此行可去掉 if ( $items == 0 ) { echo '没有发现文章'; } foreach($items as $item) { echo '<a rel="nofollow" target="_blank" href="'.$item->get_link().'">'.$item->get_title().'</a>'.$item->get_date('Y-m-j G:i').'<br>'; } echo '</div>';//如果没有使用第二节的hover效果,此行可去掉 } } } } ?>
改变feed缓存
wordpress默认对fetch_feed抓取的结果启用12小时的缓存,若要改变此时间,在functions.php中加入以下代码
function new_feed_cache( $seconds )
{
return 3600;//单位为秒,3600代表一小时,其他以此类推
}
add_filter( 'wp_feed_cache_transient_lifetime' , 'new_feed_cache' );
comment-author-feed is coded by http://xiaohudie.net. Any posts here is one hundred percent original, so please keep my link so as not to hurt this pretty girl. -
考虑到有点卡,的确加载缓慢,等待完美版,哈哈。。。就你这篇的震慑,或许有人折腾异步加载,不过你这个原理先收下来,等greader彻底关闭了,用在某个页面上,哈哈。
@郑永 PHP没有多线程异步加载的办法 这一点比较麻烦
我觉得那个时间挺关键,可以改成几小时前或则几天前,比较快速判断什么时候文章,这个以后回来探讨,有机会的。
@郑永 时间倒容易 异步加载能解决就完美了
话说wordpress后台评论的那个异步加载网页看起来很爽,速度应该一点都不影响。
@郑永 恩恩 那个不影响的 不过我这边看不到 不然好歹也有个参考了
难道是我网速太慢,没加载上去?欧卖糕
@chojemmy 是你网速太快了 我跟不上…
额,我来看看效果的
@airoschou 没放效果- -
@小蝴蝶 我擦,你怎么那么快回复,我刚刷新一下就有了,你机器人啊 :xia:
曾记得有这么个插件,只不过一直没用。莫非就是博主写的?
@小鬼哥 什么插件,叫什么?
不错,真心不错。要是评论框大些,显眼些就好了。
@子痕 反正大家都只写一句话,一行就够了哈哈