Wordpress相关

WordPress采集友链中好友博客最新文章

料神Sam发布于 2015-03-17阅读 21296 次评论 14

WordPress 采集友链中好友博客最新文章-料网 - 外贸老鸟之路

首先通知一下,料网取消了 QQ 邮箱订阅料网的更新文章。原因有二:

1)有时候 Sam 会做一些功能开发和调试,QQ 可能会不合适宜地把测试的文章发到所有订阅者的 QQ 邮箱里。假如你之前 QQ 邮箱曾收到过一封标题为 ceshi2 的空白订阅邮件,那么就是在这种情况下发生的。

2)我不认为我的每篇文章都有看的价值,如果你喜欢自然会通过各种方法来看。取消订阅推送也是为了增加料网的活跃度。

今天把友情链接改了一下,顺便给友链中有 Gravatar 头像的全显示头像,看上去比文字生动一些。又帮没有注册过 Gravatar 头像的基友们都注册了一遍头像,完美的打辅助包鸡眼有木有!我真的是友情到位啊。。(PS:Mrhua 遛狗照还是帅得抢眼啊!)

另外,发现利用 wordpress 的 Feed 函数改进一下,可以获取到友链中伙伴们的博客最新 posts,这个相当于采集的功能了。

每过 24 小时检查一次友链博客是否有新文章,并且采集过来显示在这里。 首次载入或者每过 24 小时更新缓存时,网页的载入会变慢,具体速度和服务器速度以及友情链接的数量有关系。

截图如下:

 

WordPress 采集友链中好友博客最新文章-料网 - 外贸老鸟之路

 

下面说说如何实现。 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 重新启用之后,接着把所有的友链好友的链接添加完毕。

 

WordPress 采集友链中好友博客最新文章-料网 - 外贸老鸟之路

 

接着在 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 头像本地缓存的话可以加快一些载入速度,但还是会感觉页面加载有些缓慢。

 

本站所有文章除注明“转载”的文章之外,均为原创。未经本站允许,请勿随意转载或用作任何商业用途,否则依法追究侵权者法律责任的权利。

分享到: 微信 新浪微博 QQ Qzone
料神Sam
识不足则多虑,威不足则多怒,信不足则多言。
SiteGround外贸建站主机优惠券

14条评论

发表我的评论

取消评论

邮箱白名单说明:最近料网自动提醒邮件经常会被一些邮件服务商拦截。为了您顺利并及时地收取留言被回复的提醒邮件,请在您邮箱中把料网 liaosam.com 加入白名单域名。

我不是机器人
设为私密评论
添加表情

Hi,您需要填写昵称和邮箱!

您的邮箱地址不会公开,仅仅用于收取回复。建议填写QQ邮箱,不宜填写工作邮箱。
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址 (没有就留空)
  • 问题验证:今年年份是?
呃,评论有点多哦.. 请稍等
  1. Amy御灵韵Chrome · Windows 8

    Sam,你好,我觉得你的网站特别漂亮,而且每一篇文章都有一个配图,配图没有水印而且很美,请问这些图片在哪里找到的呢?传到网上都不会被投诉的吗?

    9年前 (2016-02-19)
    广东
    回复
  2. kn007Chrome · Windows 7

    这个代码?

    10年前 (2015-03-23)
    广东
    回复
    • 料神Sam 外贸综合症患者.搜狗浏览器 · Windows 7
      @kn007 大发给的那个代码。
      10年前 (2015-03-23)
      安徽
      回复
      • kn007Chrome · Windows 7

        @料神Sam 我了解。。。
        话说你源码怎么不排版一下

        10年前 (2015-03-23)
        广东
        回复
        • 料神Sam 外贸综合症患者.搜狗浏览器 · Windows 7
          @kn007 不知道怎么排版 {一行行排?},也不想用代码高亮插件。
          10年前 (2015-03-23)
          安徽
          回复
  3. melodyding搜狗浏览器 · Windows 7

    那可是萨摩耶???流口水……不懂……

    10年前 (2015-03-20)
    山东
    回复
    • 料神Sam 外贸综合症患者.搜狗浏览器 · Windows 7
      @melodyding 的确是萨摩耶…… 遛狗帅气照……
      10年前 (2015-03-20)
      美国
      回复
  4. 鲜活Chrome · Windows 8

    好技巧 get 一个

    10年前 (2015-03-19)
    广东
    回复
  5. 同盟源猎豹安全浏览器 · Windows 7

    这也可以,厉害啊!

    10年前 (2015-03-18)
    安徽
    回复
  6. san Lee搜狗浏览器 · Windows XP

    Hello 料神,年前我们发了批货去危地马拉,货代帮我查了船已经到港,但是船公司的网站上一直没有更新消息,我们跟客户做的是 CIF,货物到港前一个星期付尾款,可是现在船不知道怎么样,客户那边也已经两天没消息了 T T,我应该怎么做,我要疯了 T T

    10年前 (2015-03-18)
    美国
    回复
    • 料神Sam 外贸综合症患者.搜狗浏览器 · Windows 7
      @san Lee 散货还是整柜?如果你货代在危地马拉那边有认识的目的港货代就让货代帮你问问现在货物的情况。如果没有,你赶紧自己网上搜索一个当地的国际货代咨询一下看看。给一些服务费让他们查一下。
      10年前 (2015-03-19)
      安徽
      回复
      • san LeeChrome · Windows XP

        @料神Sam 一个 20 尺的柜,船公司网上的信息显示船已经在 15 号到港了,但是我的客户还是没有明确告诉我什么时候可以付尾款。他本来是说这个星期初给我们打款的,可是直到今天我们还没收到款,客户答应帮我问一下他老板,可是他一直没有回应。我们现在怕已经产生了滞港费,因为货代说只有 7 天是免费放在港口上的,现在也不知道开始算了没,因为他说是从客户收到通知那天起算的。现在我的客户去加州出差了,打电话过去都飞去留言了 TT

        10年前 (2015-03-19)
        广东
        回复
  7. 巴比代尔Chrome · Windows 7

    这个棒……等着我也用用……嘿嘿……

    10年前 (2015-03-18)
    美国
    回复
  8. 认真思考的阿木Chrome · Windows XP

    感谢料神分享,学习了哈

    10年前 (2015-03-18)
    浙江
    回复