WordPress相关日志

昨晚手欠,点了一下“升级Wordpress”,于是就开始了各种忙乱。

首先是在升级前没有停用正在使用的插件,老旧插件导致Wordpress的前台、后台全部白屏。
解决办法:ftp登陆上去,将插件文件夹 plugins 重命名。

其次就是各插件恢复使用后,Simple Tags 插件的作者没有提供更新,现有版本 2.0-beta9 不支持 WordPress3.2 ,导致“相关日志”无法正常工作。

言归正传,说一下如何直接用代码实现“相关日志”的功能。

  1. 打开当前所用的模版文件夹
  2. 找到functions.php
  3. 添加如下代码:

  1. //WordPress Related Posts
  2. $wp_rp=array(
  3. 'limit'=>9,              //相关文章数量
  4. 'wp_rp_rss'=>true,       //是否在feed 中显示相关文章
  5. 'wp_no_rp'=>'random',    //无相关文章时的选择:text 或random(random-随机文章)
  6. 'wp_rp_date'=>false,     //显示文章发布日期
  7. 'wp_rp_comments'=>false, //显示文章评论数
  8. 'wp_rp_title_tag'=>'h3', //选择相关文章标题标签(h2 ,h3 ,h4 ,p ,div)
  9. );
  10. function wp_get_random_posts ($limitclause="") {
  11. global $wpdb, $post;
  12.  
  13. $q = "SELECT ID, post_title, post_content,post_excerpt, post_date, comment_count FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' AND ID != $post->ID ORDER BY RAND() $limitclause";
  14. return $wpdb->get_results($q);
  15. }
  16.  
  17. function wp_get_related_posts()
  18. { 
  19. global $wpdb, $post,$wp_rp;
  20. $limit =$wp_rp["limit"];
  21. $wp_rp_title='相关日志:';    //相关文章标题
  22. if(!$post->ID){return;}
  23. $now = current_time('mysql', 1);
  24. $tags = wp_get_post_tags($post->ID);
  25.  
  26. $taglist = "'" . $tags[0]->term_id. "'";
  27.  
  28. $tagcount = count($tags);
  29. if ($tagcount > 1) {
  30. for ($i = 1; $i < $tagcount; $i++) {
  31. $taglist = $taglist . ", '" . $tags[$i]->term_id . "'";
  32. }
  33. }
  34.  
  35. if ($limit) {
  36. $limitclause = "LIMIT $limit";
  37. }   else {
  38. $limitclause = "LIMIT 10";
  39. }
  40.  
  41. $q = "SELECT p.ID, p.post_title, p.post_content,p.post_excerpt, p.post_date,  p.comment_count, count(t_r.object_id) as cnt FROM $wpdb->term_taxonomy t_t, $wpdb->term_relationships t_r, $wpdb->posts p WHERE t_t.taxonomy ='post_tag' AND t_t.term_taxonomy_id = t_r.term_taxonomy_id AND t_r.object_id  = p.ID AND (t_t.term_id IN ($taglist)) AND p.ID != $post->ID AND p.post_status = 'publish' AND p.post_date_gmt < '$now' GROUP BY t_r.object_id ORDER BY cnt DESC, p.post_date_gmt DESC $limitclause;";
  42.  
  43. $related_posts = $wpdb->get_results($q);
  44.  
  45. $output = "";
  46.  
  47. //不存在相关日志则显示随机日志
  48. if (!$related_posts)
  49. {
  50. if($wp_rp['wp_no_rp'] == "text")
  51. {
  52. $output  .= '<li>无相关日志</li>';
  53. }
  54. else
  55.  
  56. {
  57. if($wp_rp['wp_no_rp'] == "random")
  58. {
  59. $wp_no_rp_text= '随机文章:';
  60. $related_posts = wp_get_random_posts($limitclause);
  61. } 
  62.  
  63. $wp_rp_title = $wp_no_rp_text;
  64. }
  65. }
  66.  
  67. foreach ($related_posts as $related_post )
  68. {
  69. $output .= '<li>';
  70. if($wp_rp['wp_rp_date'])
  71. {
  72. $dateformat = get_option('date_format');
  73. $output .= mysql2date($dateformat, $related_post->post_date) . "  —  ";   //日期和文章标题间隔符,默认是 —
  74. }
  75. $output .=  '<a href="'.get_permalink($related_post->ID).'" title="'.wptexturize($related_post->post_title).'">'.wptexturize($related_post->post_title).'</a>';
  76. if ($wp_rp["wp_rp_comments"])
  77. {
  78. $output .=  " (" . $related_post->comment_count . ")";
  79. }
  80. $output .=  '</li>';
  81. }
  82. $output = '<ul class="st-related-posts">' . $output . '</ul>';
  83. $wp_rp_title_tag = $wp_rp["wp_rp_title_tag"];
  84.  
  85. if(!$wp_rp_title_tag)
  86. $wp_rp_title_tag ='h3';
  87. if($wp_rp_title != '')
  88. $output'<'.$wp_rp_title_tag.' >'.$wp_rp_title .'</'.$wp_rp_title_tag.'>'. $output;
  89. return $output;
  90. }
  91.  
  92. function wp_related_posts_attach($content)
  93. {
  94. global $wp_rp;
  95. if (is_single()||(is_feed() && $wp_rp["wp_rp_rss"]))
  96. {
  97. $output = wp_get_related_posts();
  98. $content = $content.$output;
  99. }
  100. return $content;
  101. }
  102. add_filter('the_content', 'wp_related_posts_attach',100);
崔凯博客
Powered by WordPress | Theme by ck web design | TOP 顶部
Copyright © 崔凯 All rights reserved. 蜀ICP备12025891号.