找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1801|回复: 0

[Wordpress] wordpress纯代码实现外链自动增加rel=external并显示图标

[复制链接]
发表于 2011-10-6 13:41:32 | 显示全部楼层 |阅读模式
wordpress纯代码实现站外链接自动增加rel=external,并显示外链图标。让访客更加容易的分辨外部链接,提升用户体验。

具体代码如下:
  1. function url_domain_name($url){
  2. preg_match("/^(http:\/\/)?([^\/]+)/i", $url, $match);
  3. $host = $match[2];
  4. preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $match);
  5. return $match[0];
  6. }
  7. //判断是否为图片链接
  8. function external_image($url) {
  9. $chain=strtolower($url);
  10. if ((strpos($chain, ‘.jpg’) > 0) || (strpos($chain, ‘.gif’) > 0) || (strpos($chain, ‘.png’) > 0))
  11. {
  12. return true;
  13. }
  14. return false;
  15. }
  16. function parse_external_link($match){
  17. if ( !external_image($match[3]) && (url_domain_name($match[3]) != url_domain_name($_SERVER["HTTP_HOST"])) ){
  18. if(preg_match(‘/rel="(.*?)"/’, $match[1], $external)){
  19. $rel = strpos(strtolower($external[1]),"external")?$external[1]:$external[1].’ external’;
  20. $match[1]=str_replace($external[0],”,$match[1]);
  21. }else if(preg_match(‘/rel="(.*?)"/’, $match[4], $external)){
  22. $rel = strpos(strtolower($external[1]),"external")?$external[1]:$external[1].’ external’;
  23. $match[4]=str_replace($external[0],”,$match[4]);
  24. }
  25. $rel=!empty($rel)?’rel="’.$rel.’"’:'rel="external nofollow"’;
  26. return ‘<a href="’ . $match[2] . ‘//’ . $match[3] . ‘"’ . $match[1] . $match[4] . $rel. ‘>’ . $match[5] . ‘</a>’;
  27. } else {
  28. return ‘<a href="’ . $match[2] . ‘//’ . $match[3] . ‘"’ . $match[1] . $match[4] . ‘>’ . $match[5] . ‘</a>’;
  29. }
  30. }
  31. function external_link($url) {
  32. $pattern = ‘/<a (.*?)href="(.*?)\/\/(.*?)"(.*?)>(.*?)<\/a>/i’;
  33. $url = preg_replace_callback($pattern,’parse_external_link’,$url);
  34. return $url;
  35. }
  36. add_filter(‘the_content’, ‘external_link’);
  37. add_filter(‘comment_text’, ‘external_link’)
复制代码
复制以上内容到functions.php文件中

CSS代码:
  1. a[rel~="external"]{padding-right: 16px;background: transparent url("images/link_external.png") 99% 40% no-repeat;}
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|王牌互联

GMT+8, 2024-12-21 08:16 , Processed in 0.027444 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表