wordpress免插件自动添加meta信息

作者:matrix 发布时间:2014年1月30日星期四 分类:wordpress建站

Wordpress免插件自动添加meta信息

 

汗啊,今天都除夕了。完全没感觉~

WordPress主题没弄好meta信息或者根本没有那是经常的,这代码目测很实用的。

代码:

  1. /* 
  2. 自动输出head的keywords和description信息 
  3. */  
  4. /*截取字符*/  
  5. function hhtjim_Substr($str$len = 100){//默认的100  
  6.     if(!$str){  
  7.         return;  
  8.     }  
  9.     ifstrlen$str ) <= $len ){  
  10.         return $str;  
  11.     }else{  
  12.         $ellipsis = '...';  
  13.     }  
  14.     $new_str = array();  
  15.     for($i=0;$i<$len;$i++){  
  16.         $temp_str=substr($str,0,1);  
  17.         if(ord($temp_str) > 127){  
  18.             $i++;  
  19.             if($i<$len){  
  20.                 $new_str[]=substr($str,0,3);  
  21.                 $str=substr($str,3);  
  22.             }  
  23.         }else{  
  24.             $new_str[]=substr($str,0,1);  
  25.             $str=substr($str,1);  
  26.         }  
  27.     }  
  28.     $new_str = join($new_str);  
  29.     $new_str .=$ellipsis;  
  30.     return $new_str;  
  31. }  
  32. /*去掉各类标签*/  
  33. function hhtjim_Striptags($str,$allow = ''){  
  34.     $str = str_replace(" ","",$str);//去掉空格  
  35.     $str = str_replace('"','',$str);//去掉引号 
  36.     $str = preg_replace('/(\r\n)|(\n)/', '', $str); // 消灭换行符 
  37.     $str = preg_replace('/(\t)/', '', $str); // 消灭制表符 
  38.     $str = strip_tags($str,$allow); //去掉html标签 
  39.     $str = preg_replace('/\[(.+?)\]/', '', $str); // 消灭'[]'这样的标签 
  40.     return $str; 
  41. } 
  42. function HHTjim_Keywords_Description(){ 
  43.     global $post, $wp_query; 
  44.     // 默认值 
  45. $ds = get_option('description_announce')!=="" ? get_option('description_announce') :'HHTjim在互联网的个人博客。其中有分享&记录,更有不用解释的东西 -_-!  尽情欣赏吧  ^ _ ^'; 
  46. $kw = get_option('key_announce')!=="" ? get_option('key_announce') : 'HHTjim,HHTjim.Com,部落格,个人博客,沫若中学'; 
  47.     if(is_singular()){ // 普通页面 
  48.         $keywords = array($keywords); 
  49.         $keywords[] = get_post_meta($post->ID, 'Keywords', true); 
  50.         $keywords[] = get_post_meta($post->ID, 'keywords', true); 
  51.         // 仅对 单篇文章页( single ) 处理 
  52.         if( is_single() ){ 
  53.             //获得分类名称 作为关键字 
  54.             $cats = get_the_category(); 
  55.             if($cats){ 
  56.                 foreach( $cats as $cat ){ 
  57.                     $keywords[] = $cat->name; 
  58.                 } 
  59.             } 
  60.             //获取Tags 将Tags 作为关键字 
  61.             $tags = get_the_tags(); 
  62.             if($tags){ 
  63.                 foreach( $tags as $tag ){ 
  64.                     $keywords[] = $tag->name; 
  65.                 } 
  66.             } 
  67.         } 
  68.         // 格式化处理 $keywords 
  69.         if(count($keywords) > 1){ 
  70.             array_shift($keywords); 
  71.         } 
  72.         $keywords = array_filter($keywords); 
  73.         $keywords = join(',', $keywords); 
  74.         // 对 description 的处理 
  75.         if(!empty($post->post_password)){ // 受保护的文章 
  76.             $keywords = ''; 
  77.             $description = '请输入密码查看受保护的文章'; 
  78.         }else{ 
  79.             //获取自定义域内容 
  80.              $description = mb_strimwidth(hhtjim_Striptags($post->post_content),0,117).'...'; 
  81.         //  $description = hhtjim_Striptags($post->post_content); 
  82.         //   $description = hhtjim_Substr($description); 
  83.              if( empty($description) ){ 
  84.                  $description = get_post_meta($post->ID, 'description', true); 
  85.              } 
  86.             //自定义域为空 试试Excerpt 
  87.             if( empty($description) ){ 
  88.                 $description = get_the_excerpt(); 
  89.             } 
  90.             //依然为空 则截取文章的前220个字符作为描述 
  91.             if( empty($description) ){ 
  92.                 $description = hhtjim_Striptags($post->post_content); 
  93.                 $description = hhtjim_Substr($description, 220); 
  94.             } 
  95.         } 
  96.     }elseif(is_category()){ // 分类页 
  97.         $keywords = single_cat_title('', false); 
  98.         $description = hhtjim_Striptags(category_description()); 
  99.     }elseif(is_author()){ // 作者页 
  100.         $meta_auth = get_userdata(get_query_var('author')); 
  101.         $keywords = $meta_auth->display_name; 
  102.         $description = str_replace(array('"'), '&quot;', $meta_auth->description);  
  103.         $description = hhtjim_Striptags($description);  
  104.     }elseif(is_tag()){ // 标签页  
  105.         $keywords = single_cat_title('', false);  
  106.         $description = tag_description();  
  107.         $description = hhtjim_Striptags($description);  
  108.     }elseif(is_month()){ // 月份存档页  
  109.         $description = single_month_title(' ', false);  
  110.     }  
  111.     if( !emptyempty($keywords) ){  
  112.         echo '<meta name="keywords" content="',trim($keywords),'" />',"\n";  
  113.     }else{echo '<meta name="keywords" content="',trim($kw),'" />',"\n";}  
  114.     if( !emptyempty($description) ){  
  115.     if($description == '...'){  
  116.         echo '<meta name="description" content="',trim($ds),'" />',"\n";  
  117.     }else{  
  118.         echo '<meta name="description" content="',trim($description),'" />',"\n";}  
  119.     }else{echo '<meta name="description" content="',trim($ds),'" />',"\n";}  
  120.     unset($keywords,$description);  
  121. }  
  122. add_action('wp_head', 'HHTjim_Keywords_Description',1);  

说明:

代码放到WordPress主题的?>前面。

80行的117为普通文章页面的截取字数。

此代码扒自PhilNa2主题,超级强大。自己稍微修改,完善了些。

wordpress免插件实现TAG Category自动添加链接

作者:matrix 发布时间:2014年1月29日星期三 分类:wordpress建站 零零星星

此功能可以由WP keyword Link Plugin插件实现的,不过要非插件化只有另找。

网上一大把代码我这都不能用。不知道为何。

豆腐君扒的代码,真心没法用。幸好懂点正则。自己慢慢改。

改的时候发现网上的代码WP keyword Link Plugin插件的wp_keywordlink.php部分有9成相似。参照wp_keywordlink.php那该好多了。

代码: 阅读剩余部分 »

wordpress免插件设置回复后可见

作者:matrix 发布时间:2014年1月26日星期日 分类:wordpress建站

WordPress是可以像论坛那样设置回复可见。代码也不需要多少

仿DZ效果:

仿DZ效果

步骤:

1.functions.php的?>前面添加代码:

  1. /* 
  2. * 隐藏部分内容 评论后可见 
  3. */  
  4. function reply_to_read($atts$content=null) {  
  5.         extract(shortcode_atts(array("notice" => '<p class="reply-to-read">提示: 此处内容需要<a href="#respond" title="评论本文">评论本文</a>后才能查看.</p>'), $atts));//notice默认值     
  6.         $email = null;     
  7.         $user_ID = (int) wp_get_current_user()->ID;     
  8.         if ($user_ID > 0) {  
  9.             $email = get_userdata($user_ID)->user_email;  
  10.             $admin_email = "XXXX@email.tk"//博主Email  
  11.             if ($email == $admin_email) {//若是博主则直接显示内容  
  12.                 return '<p class="reply-to-read" style="background:no-repeat">'.$content.'</p>';  
  13.             }  
  14.         } else if (isset($_COOKIE['comment_author_email_' . COOKIEHASH])) {  
  15.             $email = str_replace('%40', '@', $_COOKIE['comment_author_email_' . COOKIEHASH]);  
  16.         } else {  
  17.             return strpos($notice,'提示: 此处内容需要')  ? $notice : '<p class="reply-to-read" title="此处内容需要评论本文后才能查看.">提示: '.$notice.'</p>';//未检测到评论信息(昵称、网站等)。不是博主,且未评论  
  18.         }  
  19.         if (empty($email)) {  
  20.             return 'TEST CODE:111'.$notice;//无email  
  21.         }  
  22.         global $wpdb;  
  23.         $post_id = get_the_ID();  
  24.         $query = "SELECT `comment_ID` FROM {$wpdb->comments} WHERE `comment_post_ID`={$post_id} and `comment_approved`='1' and `comment_author_email`='{$email}' LIMIT 1";     
  25.         if ($wpdb->get_results($query)) {  
  26.             return '<p class="reply-to-read" style="background:no-repeat">'.do_shortcode($content).'</p>';//若已评论  
  27.         } else {  
  28.             return strpos($notice,'提示: 此处内容需要')  ? $notice : '<p class="reply-to-read" title="此处内容需要评论本文后才能查看.">提示: '.$notice.'</p>';//已评论其他,未评论此文章  
  29.         }  
  30.     }  
  31.     add_shortcode('reply', 'reply_to_read');  

说明:使用前将第10行的email地址改为自己的

阅读剩余部分 »

自定义wordpress侧边栏小工具

作者:matrix 发布时间:2014年1月25日星期六 分类:wordpress建站

WordPress后台的小工具可随意拖动,在前台实现相应的功能。自定义的话更加强大。

我这正好使用了非插件添加文章浏览次数统计的代码:

  1. /* 访问计数 */  
  2. function record_visitors()  
  3. {  
  4.     if (is_singular())  
  5.     {  
  6.       global $post;  
  7.       $post_ID = $post->ID;  
  8.       if($post_ID)  
  9.       {  
  10.           $post_views = (int)get_post_meta($post_ID, 'views', true);  
  11.           if(!update_post_meta($post_ID, 'views', ($post_views+1)))  
  12.           {  
  13.             add_post_meta($post_ID, 'views', 1, true);  
  14.           }  
  15.       }  
  16.     }  
  17. }  
  18. add_action('wp_head', 'record_visitors');  
  19.    
  20. /// 函数名称:post_views  
  21. /// 函数作用:取得文章的阅读次数  
  22. function post_views($before = '(点击 ', $after = ' 次)', $echo = 1)  
  23. {  
  24.   global $post;  
  25.   $post_ID = $post->ID;  
  26.   $views = (int)get_post_meta($post_ID, 'views', true);  
  27.   if ($echoecho $before, number_format($views), $after;  
  28.   else return $views;  
  29. }  

就利用上面的非插件统计功能在侧边栏添加个文章TOP列表,列出浏览次数最多的文章。

过程: 阅读剩余部分 »

BrowserShots浏览器兼容在线测试

作者:matrix 发布时间:2014年1月24日星期五 分类: 零零星星

BrowserShots浏览器兼容测试

 

什么是BrowserShots

 

传送门:http://BrowserShots.org/

 

BrowserShots这个在线工具早很多年就有了,以前在free8上看到的。

BrowserShots上可以了解自己的网页在各种不同的操作系统不同的浏览器下的兼容性,可以任意选择操作系统及浏览器。

输入URl,勾选所需OS下的浏览器,提交。Enter URL Here 这点英文你应该懂的。

下方的Select可以选择操作系统、浏览器引擎、Flash启用、javascript启用、颜色、窗口等。貌似还有接口,反正很屌很强大!

提交后等待一定时间系统会把浏览器截图给你查看。很不错~

阅读剩余部分 »

给wordpress评论头像添加alt属性

作者:matrix 发布时间:2014年1月16日星期四 分类:wordpress建站

用百度站长工具的时候看到评论列表的头像没有alt属性,很疑惑。找到wp_list_comments相关函数调用的文件地方,的确是默认没有开启。

第1353行

方法一:

若硬要有alt的话就得修改WordPress系统文件wp-include/comment-template.php。

notepad++打开,查找

  1. <?php if ($args['avatar_size'] != 0) echo get_avatar$comment$args['avatar_size'] ); ?>

将其改为:

  1. <?php if ($args['avatar_size'] != 0) echo get_avatar$comment$args['avatar_size'],"","$comment->comment_author"  ); ?>

之后评论者头像就有作者名的alt属性。

方法二:

建议使用此办法,functions.php中的?>之前添加代码

  1. function mytheme_get_avatar_alt($avatar) {  
  2. global $comment;  
  3. $avatar = str_replace("alt=''",'alt="'.$comment->comment_author.'"',$avatar);//添加alt信息  
  4.     return $avatar;  
  5. }  
  6. add_filter( 'get_avatar', 'mytheme_get_avatar_alt', 10, 3 );  

 

参考:
http://moper.me/wordpress-comment-avatar-add-alt.html
http://cnzhx.net/blog/wordpress-avatar-hook

修改外链转换工具

作者:matrix 发布时间:2014年1月15日星期三 分类: 零零星星

修改外链转换工具

参考凉手抚温柔的代码修改此>>外链转换工具

变动:

添加ajax post数据提交,不支持js的浏览器是扛不动了。

度娘网盘遍历3层文件夹的文件信息。最多显示第二层300个,第三层200个文件,第一层就没试过。太多了的话那没法了。此功能出于本人某些情况下片考虑,无实际意义。:)

文件夹结构太复杂的,遍历起来那就真心慢。

度娘网盘的外链就只能下载,干其他没法的。

微云:解决BAE上没法下载多文件打包的问题。

微云解析源码>>微云网盘php解析源码_更新

ajax 代码参考至凉手抚温柔:http://www.ifoouu.com/note/73.html,在此感谢!
他的站已经熄火,这里给个他的外链工具源码(BAE2.0):
http://pan.baidu.com/s/1nt9J5bV

MP3:TEST 阅读剩余部分 »