昨晚手欠,點了一下 「升級 WordPress」,於是就開始了各種忙亂。

首先是在升級前沒有停用正在使用的插件,老舊插件導致 WordPress 的前台、後台全部白屏。

解決辦法:ftp 登陸上去,將插件文件夾 plugins 重命名。

其次就是各插件恢復使用後,Simple Tags 插件的作者沒有提供更新,現有版本 2.0-beta9 不支持 WordPress3.2 ,導致 「相關日誌」 無法正常工作。

言歸正傳,説一下如何直接用代碼實現 「相關日誌」 的功能。

打開當前所用的模版文件夾

找到 functions.php

添加如下代碼:

//WordPress Related Posts
$wp_rp=array(
'limit'=>9,              //相關文章數量
'wp_rp_rss'=>true,       //是否在 feed 中顯示相關文章
'wp_no_rp'=>'random',    //無相關文章時的選擇:text 或 random(random-隨機文章)
'wp_rp_date'=>false,     //顯示文章發佈日期
'wp_rp_comments'=>false, //顯示文章評論數
'wp_rp_title_tag'=>'h3', //選擇相關文章標題標籤 (h2 ,h3 ,h4 ,p ,div)
);
function wp_get_random_posts ($limitclause="") {
global $wpdb, $post;
$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";
return $wpdb->get_results($q);
}
function wp_get_related_posts()
{
global $wpdb, $post,$wp_rp;
$limit =$wp_rp["limit"];
$wp_rp_title='相關日誌:';    //相關文章標題
if(!$post->ID){return;}
$now = current_time('mysql', 1);
$tags = wp_get_post_tags($post->ID);
$taglist = "'" . $tags[0]->term_id. "'";
$tagcount = count($tags);
if ($tagcount > 1) {
for ($i = 1; $i < $tagcount; $i++) {
$taglist = $taglist . ", '" . $tags[$i]->term_id . "'";
}
}
if ($limit) {
$limitclause = "LIMIT $limit";
}   else {
$limitclause = "LIMIT 10";
}
$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;";
$related_posts = $wpdb->get_results($q);
$output = "";
//不存在相關日誌則顯示隨機日誌
if (!$related_posts)
{
if($wp_rp['wp_no_rp'] == "text")
{
$output  .= '<li> 無相關日誌</li>';
}
else
{
if($wp_rp['wp_no_rp'] == "random")
{
$wp_no_rp_text= '隨機文章:';
$related_posts = wp_get_random_posts($limitclause);
}$wp_rp_title = $wp_no_rp_text;
}
}
foreach ($related_posts as $related_post )
{
$output .= '<li>';
if($wp_rp['wp_rp_date'])
{
$dateformat = get_option('date_format');
$output .= mysql2date($dateformat, $related_post->post_date) . "  —  ";   //日期和文章標題間隔符,默認是 —
}
$output .=  '<a href="'.get_permalink($related_post->ID).'" title="'.wptexturize($related_post->post_title).'">'.wptexturize($related_post->post_title).'</a>';
if ($wp_rp["wp_rp_comments"])
{
$output .=  " (" . $related_post->comment_count . ")";
}
$output .=  '</li>';
}
$output = '<ul >' . $output . '</ul>';
$wp_rp_title_tag = $wp_rp["wp_rp_title_tag"];
if(!$wp_rp_title_tag)
$wp_rp_title_tag ='h3';
if($wp_rp_title != '')
$output =  '<'.$wp_rp_title_tag.' >'.$wp_rp_title .'</'.$wp_rp_title_tag.'>'. $output;
return $output;
}
function wp_related_posts_attach($content)
{
global $wp_rp;
if (is_single()||(is_feed() && $wp_rp["wp_rp_rss"]))
{
$output = wp_get_related_posts();
$content = $content.$output;
}
return $content;
}
add_filter('the_content', 'wp_related_posts_attach',100);