首先通知一下,料网取消了 QQ 邮箱订阅料网的更新文章。原因有二:
1)有时候 Sam 会做一些功能开发和调试,QQ 可能会不合适宜地把测试的文章发到所有订阅者的 QQ 邮箱里。假如你之前 QQ 邮箱曾收到过一封标题为 ceshi2 的空白订阅邮件,那么就是在这种情况下发生的。
2)我不认为我的每篇文章都有看的价值,如果你喜欢自然会通过各种方法来看。取消订阅推送也是为了增加料网的活跃度。
今天把友情链接改了一下,顺便给友链中有 Gravatar 头像的全显示头像,看上去比文字生动一些。又帮没有注册过 Gravatar 头像的基友们都注册了一遍头像,完美的打辅助包鸡眼有木有!我真的是友情到位啊。。(PS:Mrhua 遛狗照还是帅得抢眼啊!)
另外,发现利用 wordpress 的 Feed 函数改进一下,可以获取到友链中伙伴们的博客最新 posts,这个相当于采集的功能了。
每过 24 小时检查一次友链博客是否有新文章,并且采集过来显示在这里。 首次载入或者每过 24 小时更新缓存时,网页的载入会变慢,具体速度和服务器速度以及友情链接的数量有关系。
截图如下:
下面说说如何实现。 wordpress 早期版本后台是支持链接(Links)菜单的,后来从 3.5 版本开始默认隐藏了这一菜单。我们先把它恢复出来。有两种方式:
代码
在 functions.php 文件中加上一行代码:
add_filter( 'pre_option_link_manager_enabled', '__return_true' );
保存,覆盖 wordpress 主题文件下根目录下 functions.php 文件。刷新后台,即可在多媒体下方看到 “链接”(Links)已出现。
插件
后台仪表盘 Dashboard“插件” → “安装插件”,然后搜索“Link Manager”,来安装由“WordPress”或“nacin”开发的“Link Manager”插件以启用该功能。 对 wordpress 文件或代码不太熟悉的用插件会方便一点。 把 Links 重新启用之后,接着把所有的友链好友的链接添加完毕。
接着在 functions.php 中加上代码:
include_once( ABSPATH . WPINC . '/feed.php' ); function get_feed_posts( $url ){ $cache = get_transient($url); if ( $cache ) return $cache; $rss = fetch_feed( $url ); $output = array(); if ( ! is_wp_error( $rss ) ) : delete_transient($url); $maxitems = $rss->get_item_quantity( 5 ); //抓取最新 5 篇文章 $rss_items = $rss->get_items( 0, $maxitems ); foreach ( $rss_items as $item ) { $output[] = array('title'=>$item->get_title(),'url'=>esc_url( $item->get_permalink() ),'date'=>$item->get_date('c')); } set_transient($url,$output,60*60*24); return $output; endif; } function get_the_link_items_with_posts($id = null){ $bookmarks = get_bookmarks('orderby=date&category=' .$id ); $output = ''; if ( !empty($bookmarks) ) { $output .= '<div class="friend-posts--wrap fontSmooth">'; foreach ($bookmarks as $bookmark) { $output .= '<div class="friend-posts"><h4 class="friend-posts-title"><a style="display:block" href="' . $bookmark->link_url . '" title="' . $bookmark->link_description . '" target="_blank" >'. get_avatar($bookmark->link_notes,24) . $bookmark->link_name .'</a></h4>'; $url = $bookmark->link_rss ? $bookmark->link_rss : rtrim($bookmark->link_url,'/') . '/feed/'; $rss_items = get_feed_posts( $url ); if( !empty($rss_items) ) { $output .= '<ul class="friend-posts-items">'; foreach ($rss_items as $rss_item){ $output .= '<li><a target="_blank" rel="external nofollow" href="'.$rss_item['url'].'">'.$rss_item['title'].'</a></li>'; } $output .= '</ul>'; } $output .= '</div>'; } $output .= '</div>'; } return $output; } function friends_shortcode( $atts, $content = null ) { extract( shortcode_atts( array( 'cat' => '' ), $atts ) ); return get_the_link_items_with_posts($cat); } add_shortcode('friends', 'friends_shortcode');
对应的 CSS 样式:
.friend-posts--wrap{letter-spacing:-0.8em} .friend-posts{margin-top:30px;width:50%;box-sizing:border-box;-webkit-box-sizing:border-box;display:inline-block;letter-spacing:0;vertical-align:top} .friend-posts:nth-child(2n){padding-left:20px} .friend-posts-title{border-bottom:1px solid rgba(0,0,0,0.05);color:rgba(0,0,0,0.44);font-size:14px;margin-bottom:8px;padding-bottom:8px} .friend-posts-title .avatar{border-radius:100%;margin-right:5px;vertical-align:middle;} .friend-posts-items{font-size:14px;color:rgba(0,0,0,0.6);margin:0;padding:0;line-height:1.8}
使用方法: 在 wordpress 里新建一个 page,然后在编辑器中写入短代码: [friend]
(把 friend 换成 friends)
说明:以上的自定义函数里,你可以加上一些条件,比如只抓取特定友链 ID 的 feed,或者只抓取前几个友链好友的最新 posts,善用判断 if 和 return。
缺点
加载友情链接页面的速度比以前慢了很多(比较明显),因为要遍历抓取所有好友博客 feed 内容以及读取 Gravatar 头像,所以难免会耗费一些时间。
如果已经把 Gravatar 头像本地缓存的话可以加快一些载入速度,但还是会感觉页面加载有些缓慢。
本站所有文章除注明“转载”的文章之外,均为原创。未经本站允许,请勿随意转载或用作任何商业用途,否则依法追究侵权者法律责任的权利。
Sam,你好,我觉得你的网站特别漂亮,而且每一篇文章都有一个配图,配图没有水印而且很美,请问这些图片在哪里找到的呢?传到网上都不会被投诉的吗?
这个代码?
@料神Sam 我了解。。。
话说你源码怎么不排版一下
那可是萨摩耶???流口水……不懂……
好技巧 get 一个
这也可以,厉害啊!
Hello 料神,年前我们发了批货去危地马拉,货代帮我查了船已经到港,但是船公司的网站上一直没有更新消息,我们跟客户做的是 CIF,货物到港前一个星期付尾款,可是现在船不知道怎么样,客户那边也已经两天没消息了 T T,我应该怎么做,我要疯了 T T
@料神Sam 一个 20 尺的柜,船公司网上的信息显示船已经在 15 号到港了,但是我的客户还是没有明确告诉我什么时候可以付尾款。他本来是说这个星期初给我们打款的,可是直到今天我们还没收到款,客户答应帮我问一下他老板,可是他一直没有回应。我们现在怕已经产生了滞港费,因为货代说只有 7 天是免费放在港口上的,现在也不知道开始算了没,因为他说是从客户收到通知那天起算的。现在我的客户去加州出差了,打电话过去都飞去留言了 TT
这个棒……等着我也用用……嘿嘿……
感谢料神分享,学习了哈